Some configuration keys have flags associated with them. Their meanings are listed below.
The configuration key is required, and it is an error to not specify it.
The configuration key is persisted, and can not be changed without recreating the book.
The following types of configuration keys exist, listed with its expected value format.
An identification string, maximum 16 characters long. Give the value in double quotes.
Value identifies a byte count. Give the value in double quotes. Accepts k, m, g, t and p suffix.
Regular string. Give the value in double quotes.
Boolean value. Accepts true or false, without quotes.
Floating point number. Give the value without quotes.
Unsigned integer value. Give the value without quotes.
Symbolic ID of this environment.
Memory cache size
The number of bytes of memory to use for object storage in this environment.
Memory cache chunk size
Maximum size of memory chunks allocated for object fragments. Also defines the size of AIO requests.
Memory cache meta chunk size
Target size of the memory chunk containing the meta data (object attributes including the object headers) of stored objects. This is an indication only, and if necessary a larger chunk will be used, up to
memcache_chunksize. Any left over space will be used for object body data.
Default store selection
Specifies which stores will be selected if no specific store is selected in VCL (through the MSE VMOD). This functions in the same way as with
mse.select_stores(), so it is legal to specify a book name, a store name, or a tag that is shared among any number of books and stores
Varylib table size
Size of table chunk used for vary library
Symbolic ID of this book.
Directory path for book storage
Specifies the directory where the book’s data files should be stored.
Size of database
Size of the embedded database. Upon first initialization the storage file will be preallocated to this size. The size may be increased at a later stage by increasing this value and restarting Varnish. The storage file will then grow up to the new limit as needed. Decreasing the value will not have any effect.
Number of simultaneous readers
Size of reader table for database readers. This defines the maximum number of simultaneous readers.
Synchronize database to disk
Synchronize the database to disk at the end of transactions. This enables transaction consistency also in the event of operating system or power failures. If these types of errors are not expected, one may turn off the synchronization to disk. When turned off, there will still be consistency with regard to the cached objects and cache invalidations in case of planned or unplanned restarts of the Varnish daemon.
Database object insertion timeout
Experimental: The maximum time to wait for database access on object insertion. If this timeout expires, the attempt is aborted, and the fetch is done as a memory only object instead (not persisted). Note: This parameter and the interface to control this behavior is subject to change.
Database high waterlevel ratio
The maximum fill level of the embedded database as a ratio. When this fill level is reached, new transactions are queued until the background worker thread has purged enough objects to get below the fill level again.
Database waterlevel hysterisis
The embedded database fill level at which the dedicated worker thread to remove objects will be started, expressed as the ratio difference to the database waterlevel. When this level is reached, the background worker thread to purge objects is started, but transactions are not queued until the database waterlevel is reached.
Waterlevel purge batch size
Number of objects to snipe in each batch during database waterlevel purging.
Banlist journal size
The active bans on the system are stored in a journal file of this size. If the space is exhausted, they will bleed off into the embedded database.
Symbolic ID of this store.
Storage file name
The full path filename of the storage file that will hold the persisted objects.
The size of the store in bytes.
Store chunk alignment
Align all store allocations to multiples of this amount.
Minimum size of a free chunk
The minimum size of a free store chunk to keep track of. Chunks smaller than this will instead be added to allocations as extra overhead.
Number of simultaneous AIO requests
The number of concurrent AIO requests allowed. If exceeded, threads will be queued waiting for an AIO context to become available. Defines the concurrency against the system IO device.
Number of read only database handles set aside for the AIO
The AIO subsystem will have this many read only database handles in a pool to use when needing to read metadata from the book. If exhausted the thread will be queued until a database handle becomes available.
Experimental: Do not store objects when write queue is too long
When this option is enabled and more than
aio_write_queue_overflow_len threads are already queued for write IO, then the store selection is overridden and the object becomes a memory only cached object. The object is still cached, and will live in the memory cache according to the normal rules, but will not be disk backed, and if removed through LRU eviction will have to be fetched again from the backend. Note: This parameter and the interface to control this behavior is subject to change.
Experimental: Queue length at which to not store objects
The AIO write queue length at which the store bypass option takes effect. Note: This parameter and the interface to control this behavior is subject to change.
Store metadata update journal size
Object metadata updates are temporarily stored in a journal file of this size, and applied to the embedded database as part of the next transaction. If the space is exhausted, additional database transactions are made to flush the journal.
Fraction of store objects painted as candidates for waterlevel purge
This fraction of the objects on the store LRU will be painted as candidates for waterlevel purge when there is too little space available for new objects in the cache. The painted objects are all eligible for purging, and which object is purged is based on the location they occupy in the store so that continuous free areas may be created.
Number of waterlevel threads to use
This scales the number of threads to use when purging objects to achieve the set waterlevel for the store. More threads will achieve more concurrency to reach the goal faster.
Minimum chunk size to include in the store waterlevel measurement
When calculating the current fill level of the store, only free chunks of at least this size is considered. This defines the level of fragmentation that is accepted, and chunks of this size and larger does not constitute unwanted fragmentation.
The maximum fill level of the store given as a ratio of the store size. When this fill level is reached, attempts to allocate space for new objects will be queued until the waterlevel drops below this level.
Store waterlevel hysterisis
The maximum fill level at which the background worker threads to purge objects and create continuous free space are started. Expressed as the ratio difference to the store waterlevel. When the fill level drops below this level the background threads are paused.
Store waterlevel purge batch size
The number of objects each background purge thread will remove from the the cache in each step before remeasuring the fill level.