Skip to content

Instantly share code, notes, and snippets.

@mjf
Last active August 29, 2015 14:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mjf/ddae14982720f77b665a to your computer and use it in GitHub Desktop.
Save mjf/ddae14982720f77b665a to your computer and use it in GitHub Desktop.
Varnish Cache Memos

Varnish Cache Memos

Authors

Matouš Jan Fialka

Date

2015-03-31

Version

Varnish Cache v4.0.2

Memo

varnish_cache.2015.3.31.1

HTTP errors caching

Cache HTTP error 404 only for 30 seconds

sub vcl_backend_response {
   if(beresp.status == 404) {
      set beresp.ttl = 30s;
   }
}

Do not cache HTTP error 404 at all

sub vcl_backend_response {
   if(beresp.status == 404) {
      set beresp.ttl = 0s;
      set beresp.uncacheable = false;
   }
}

Varnish Cache Memos

Authors

Matouš Jan Fialka

Date

2015-01-12

Version

Varnish Cache v4.0.2

Memo

varnish_cache.2015.1.12.1

Varnish Cache Subroutines

Varnish Cache Subroutines Table
subroutine scope deliver fetch restart hash pass pipe synth purge lookup abandon retry ok fail
vcl_deliver client
vcl_fini vcl.discard
vcl_hash client
vcl_hit client
vcl_init vcl.load
vcl_miss client
vcl_pass client
vcl_pipe client
vcl_purge client
vcl_recv client
vcl_synth client
vcl_backend_error backend
vcl_backend_fetch backend
vcl_backend_response backend

Varnish Cache Memos

Authors

Matouš Jan Fialka

Date

2015-01-12

Version

Varnish Cache v4.0.2

Memo

varnish_cache.2015.1.12.2

Output of params.show -l in varnishadm

acceptor_sleep_decay

 - Value is: 0.9 (default)
 - Default is: 0.9
 - Minimum is: 0
 - Maximum is: 1

 If we run out of resources, such as file descriptors or worker
 threads, the acceptor will sleep between accepts.
 This parameter (multiplicatively) reduce the sleep duration for
 each succesfull accept. (ie: 0.9 = reduce by 10%)

 NB: We do not know yet if it is a good idea to change this
 parameter, or if the default value is even sensible.  Caution
 is advised, and feedback is most welcome.

acceptor_sleep_incr

 - Value is: 0.001 [s] (default)
 - Default is: 0.001
 - Minimum is: 0.000
 - Maximum is: 1.000

 If we run out of resources, such as file descriptors or worker
 threads, the acceptor will sleep between accepts.
 This parameter control how much longer we sleep, each time we
 fail to accept a new connection.

 NB: We do not know yet if it is a good idea to change this
 parameter, or if the default value is even sensible.  Caution
 is advised, and feedback is most welcome.

acceptor_sleep_max

 - Value is: 0.050 [s] (default)
 - Default is: 0.050
 - Minimum is: 0.000
 - Maximum is: 10.000

 If we run out of resources, such as file descriptors or worker
 threads, the acceptor will sleep between accepts.
 This parameter limits how long it can sleep between attempts to
 accept new connections.

 NB: We do not know yet if it is a good idea to change this
 parameter, or if the default value is even sensible.  Caution
 is advised, and feedback is most welcome.

auto_restart

 - Value is: on [bool] (default)
 - Default is: on

 Restart child process automatically if it dies.

ban_dups

 - Value is: on [bool] (default)
 - Default is: on

 Elimited older identical bans when new bans are created.  This
 test is CPU intensive and scales with the number and complexity
 of active (non-Gone) bans.  If identical bans are frequent, the
 amount of CPU needed to actually test  the bans will be
 similarly reduced.

ban_lurker_age

 - Value is: 60.000 [s] (default)
 - Default is: 60.000
 - Minimum is: 0.000

 The ban lurker does not process bans until they are this old. 
 Right when a ban is added, the most frequently hit objects will
 get tested against it as part of object lookup.  This parameter
 prevents the ban-lurker from kicking in, until the rush is
 over.

ban_lurker_batch

 - Value is: 1000 (default)
 - Default is: 1000
 - Minimum is: 1

 How many objects the ban lurker examines before taking a
 ban_lurker_sleep.  Use this to pace the ban lurker so it does
 not eat too much CPU.

ban_lurker_sleep

 - Value is: 0.010 [s] (default)
 - Default is: 0.010
 - Minimum is: 0.000

 The ban lurker thread sleeps between work batches, in order to
 not monopolize CPU power.  When nothing is done, it sleeps a
 fraction of a second before looking for new work to do.
 A value of zero disables the ban lurker.

between_bytes_timeout

 - Value is: 60.000 [s] (default)
 - Default is: 60.000
 - Minimum is: 0.000

 Default timeout between bytes when receiving data from backend.
 We only wait for this many seconds between bytes before giving
 up. A value of 0 means it will never time out. VCL can override
 this default value for each backend request and backend
 request. This parameter does not apply to pipe.

busyobj_worker_cache

 - Value is: off [bool] (default)
 - Default is: off

 Cache free busyobj per worker thread. Disable this if you have
 very high hitrates and want to save the memory of one busyobj
 per worker thread.

cc_command

 - Value is: "exec gcc -std=gnu99 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1  -m64 -mtune=generic -Wall -Werror -Wno-error=unused-result -pthread -fpic -shared -Wl,-x -o %o %s" (default)
 - Default is: "exec gcc -std=gnu99 -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1  -m64 -mtune=generic -Wall -Werror -Wno-error=unused-result -pthread -fpic -shared -Wl,-x -o %o %s"

 Command used for compiling the C source code to a dlopen(3)
 loadable object.  Any occurrence of %s in the string will be
 replaced with the source file name, and %o will be replaced
 with the output file name.

 NB: This parameter will not take any effect until the VCL
 programs have been reloaded.

cli_buffer

 - Value is: 8k [bytes] (default)
 - Default is: 8k
 - Minimum is: 4k

 Size of buffer for CLI command input.
 You may need to increase this if you have big VCL files and use
 the vcl.inline CLI command.
 NB: Must be specified with -p to have effect.

cli_limit

 - Value is: 48k [bytes] (default)
 - Default is: 48k
 - Minimum is: 128b
 - Maximum is: 99999999b

 Maximum size of CLI response.  If the response exceeds this
 limit, the reponse code will be 201 instead of 200 and the last
 line will indicate the truncation.

cli_timeout

 - Value is: 60.000 [seconds] (default)
 - Default is: 60.000
 - Minimum is: 0.000

 Timeout for the childs replies to CLI requests from the
 mgt_param.

clock_skew

 - Value is: 10 [s] (default)
 - Default is: 10
 - Minimum is: 0

 How much clockskew we are willing to accept between the backend
 and our own clock.

connect_timeout

 - Value is: 3.500 [s] (default)
 - Default is: 3.500
 - Minimum is: 0.000

 Default connection timeout for backend connections. We only try
 to connect to the backend for this many seconds before giving
 up. VCL can override this default value for each backend and
 backend request.

critbit_cooloff

 - Value is: 180.000 [s] (default)
 - Default is: 180.000
 - Minimum is: 60.000
 - Maximum is: 254.000

 How long time the critbit hasher keeps deleted objheads on the
 cooloff list.

 NB: Do not change this parameter, unless a developer tell you
 to do so.

debug

 - Value is: none (default)
 - Default is: none

 Enable/Disable various kinds of debugging.

    none                Disable all debugging

 Use +/- prefix to set/reset individual bits:

    req_state           VSL Request state engine
    workspace           VSL Workspace operations
    waiter              VSL Waiter internals
    waitinglist         VSL Waitinglist events
    syncvsl             Make VSL synchronous
    hashedge            Edge cases in Hash
    vclrel              Rapid VCL release
    lurker              VSL Ban lurker
    esi_chop            Chop ESI fetch to bits

default_grace

 - Value is: 10.000 [seconds] (default)
 - Default is: 10.000
 - Minimum is: 0.000

 Default grace period.  We will deliver an object this long
 after it has expired, provided another thread is attempting to
 get a new copy.

 NB: This parameter is evaluated only when objects are
 created.To change it for all objects, restart or ban
 everything.

default_keep

 - Value is: 0.000 [seconds] (default)
 - Default is: 0.000
 - Minimum is: 0.000

 Default keep period.  We will keep a useless object around this
 long, making it available for conditional backend fetches. 
 That means that the object will be removed from the cache at
 the end of ttl+grace+keep.

 NB: This parameter is evaluated only when objects are
 created.To change it for all objects, restart or ban
 everything.

default_ttl

 - Value is: 1200.000 [seconds]
 - Default is: 120.000
 - Minimum is: 0.000

 The TTL assigned to objects if neither the backend nor the VCL
 code assigns one.

 NB: This parameter is evaluated only when objects are
 created.To change it for all objects, restart or ban
 everything.

feature

 - Value is: none (default)
 - Default is: none

 Enable/Disable various minor features.
    none                       Disable all features.

 Use +/- prefix to enable/disable individual feature:

    short_panic                Short panic message.
    wait_silo                  Wait for persistent silo.
    no_coredump                No coredumps.
    esi_ignore_https           Treat HTTPS as HTTP in
                               ESI:includes
    esi_disable_xml_check      Don't check of body looks like
                               XML
    esi_ignore_other_elements  Ignore non-esi XML-elements
    esi_remove_bom             Remove UTF-8 BOM

fetch_chunksize

 - Value is: 32k [bytes]
 - Default is: 128k
 - Minimum is: 4k

 The default chunksize used by fetcher. This should be bigger
 than the majority of objects with short TTLs.
 Internal limits in the storage_file module makes increases
 above 128kb a dubious idea.

 NB: We do not know yet if it is a good idea to change this
 parameter, or if the default value is even sensible.  Caution
 is advised, and feedback is most welcome.

fetch_maxchunksize

 - Value is: 0.25G [bytes] (default)
 - Default is: 0.25G
 - Minimum is: 64k

 The maximum chunksize we attempt to allocate from storage.
 Making this too large may cause delays and storage
 fragmentation.

 NB: We do not know yet if it is a good idea to change this
 parameter, or if the default value is even sensible.  Caution
 is advised, and feedback is most welcome.

first_byte_timeout

 - Value is: 60.000 [s] (default)
 - Default is: 60.000
 - Minimum is: 0.000

 Default timeout for receiving first byte from backend. We only
 wait for this many seconds for the first byte before giving up.
 A value of 0 means it will never time out. VCL can override
 this default value for each backend and backend request. This
 parameter does not apply to pipe.

group

 - Value is: varnish (998)
 - Default is: GID 0

 The unprivileged group to run as.

 NB: This parameter will not take any effect until the child
 process has been restarted.

 NB: This parameter only works if varnishd is run as root.

group_cc

 - Value is: <not set> (default)
 - Default is: <not set>

 On some systems the C-compiler is restricted so not everybody
 can run it.  This parameter makes it possible to add an extra
 group to the sandbox process which runs the cc_command, in
 order to gain access to such a restricted C-compiler.

 NB: This parameter only works if varnishd is run as root.

gzip_buffer

 - Value is: 32k [bytes] (default)
 - Default is: 32k
 - Minimum is: 2k

 Size of malloc buffer used for gzip processing.
 These buffers are used for in-transit data, for instance
 gunzip'ed data being sent to a client.Making this space to
 small results in more overhead, writes to sockets etc, making
 it too big is probably just a waste of memory.

 NB: We do not know yet if it is a good idea to change this
 parameter, or if the default value is even sensible.  Caution
 is advised, and feedback is most welcome.

gzip_level

 - Value is: 6 (default)
 - Default is: 6
 - Minimum is: 0
 - Maximum is: 9

 Gzip compression level: 0=debug, 1=fast, 9=best

gzip_memlevel

 - Value is: 8 (default)
 - Default is: 8
 - Minimum is: 1
 - Maximum is: 9

 Gzip memory level 1=slow/least, 9=fast/most compression.
 Memory impact is 1=1k, 2=2k, ... 9=256k.

http_gzip_support

 - Value is: on [bool] (default)
 - Default is: on

 Enable gzip support. When enabled Varnish request compressed
 objects from the backend and store them compressed. If a client
 does not support gzip encoding Varnish will uncompress
 compressed objects on demand. Varnish will also rewrite the
 Accept-Encoding header of clients indicating support for gzip
 to:
   Accept-Encoding: gzip

 Clients that do not support gzip will have their
 Accept-Encoding header removed. For more information on how
 gzip is implemented please see the chapter on gzip in the
 Varnish reference.

http_max_hdr

 - Value is: 64 [header lines] (default)
 - Default is: 64
 - Minimum is: 32
 - Maximum is: 65535

 Maximum number of HTTP header lines we allow in
 {req|resp|bereq|beresp}.http (obj.http is autosized to the
 exact number of headers).
 Cheap, ~20 bytes, in terms of workspace memory.
 Note that the first line occupies five header lines.

http_range_support

 - Value is: on [bool] (default)
 - Default is: on

 Enable support for HTTP Range headers.

http_req_hdr_len

 - Value is: 8k [bytes] (default)
 - Default is: 8k
 - Minimum is: 40b

 Maximum length of any HTTP client request header we will allow.
  The limit is inclusive its continuation lines.

http_req_size

 - Value is: 32k [bytes] (default)
 - Default is: 32k
 - Minimum is: 0.25k

 Maximum number of bytes of HTTP client request we will deal
 with.  This is a limit on all bytes up to the double blank line
 which ends the HTTP request.
 The memory for the request is allocated from the client
 workspace (param: workspace_client) and this parameter limits
 how much of that the request is allowed to take up.

http_resp_hdr_len

 - Value is: 8k [bytes] (default)
 - Default is: 8k
 - Minimum is: 40b

 Maximum length of any HTTP backend response header we will
 allow.  The limit is inclusive its continuation lines.

http_resp_size

 - Value is: 32k [bytes] (default)
 - Default is: 32k
 - Minimum is: 0.25k

 Maximum number of bytes of HTTP backend resonse we will deal
 with.  This is a limit on all bytes up to the double blank line
 which ends the HTTP request.
 The memory for the request is allocated from the worker
 workspace (param: thread_pool_workspace) and this parameter
 limits how much of that the request is allowed to take up.

idle_send_timeout

 - Value is: 60.000 [seconds] (default)
 - Default is: 60.000
 - Minimum is: 0.000

 Time to wait with no data sent. If no data has been transmitted
 in this many
 seconds the session is closed.
 See setsockopt(2) under SO_SNDTIMEO for more information.

 NB: This parameter may take quite some time to take (full)
 effect.

listen_address

 - Value is: varnish.bec1.data:6081
 - Default is: :80

 Whitespace separated list of network endpoints where Varnish
 will accept requests.
 Possible formats: host, host:port, :port

 NB: This parameter will not take any effect until the child
 process has been restarted.

listen_depth

 - Value is: 1024 [connections] (default)
 - Default is: 1024
 - Minimum is: 0

 Listen queue depth.

 NB: This parameter will not take any effect until the child
 process has been restarted.

lru_interval

 - Value is: 2.000 [seconds] (default)
 - Default is: 2.000
 - Minimum is: 0.000

 Grace period before object moves on LRU list.
 Objects are only moved to the front of the LRU list if they
 have not been moved there already inside this timeout period. 
 This reduces the amount of lock operations necessary for LRU
 list access.

 NB: We do not know yet if it is a good idea to change this
 parameter, or if the default value is even sensible.  Caution
 is advised, and feedback is most welcome.

max_esi_depth

 - Value is: 5 [levels] (default)
 - Default is: 5
 - Minimum is: 0

 Maximum depth of esi:include processing.

max_restarts

 - Value is: 4 [restarts] (default)
 - Default is: 4
 - Minimum is: 0

 Upper limit on how many times a request can restart.
 Be aware that restarts are likely to cause a hit against the
 backend, so don't increase thoughtlessly.

max_retries

 - Value is: 4 [retries] (default)
 - Default is: 4
 - Minimum is: 0

 Upper limit on how many times a backend fetch can retry.

nuke_limit

 - Value is: 50 [allocations] (default)
 - Default is: 50
 - Minimum is: 0

 Maximum number of objects we attempt to nuke in orderto make
 space for a object body.

 NB: We do not know yet if it is a good idea to change this
 parameter, or if the default value is even sensible.  Caution
 is advised, and feedback is most welcome.

pcre_match_limit

 - Value is: 10000 (default)
 - Default is: 10000
 - Minimum is: 1

 The limit for the  number of internal matching function calls
 in a pcre_exec() execution.

pcre_match_limit_recursion

 - Value is: 10000 (default)
 - Default is: 10000
 - Minimum is: 1

 The limit for the  number of internal matching function
 recursions in a pcre_exec() execution.

ping_interval

 - Value is: 3 [seconds] (default)
 - Default is: 3
 - Minimum is: 0

 Interval between pings from parent to child.
 Zero will disable pinging entirely, which makes it possible to
 attach a debugger to the child.

 NB: This parameter will not take any effect until the child
 process has been restarted.

pipe_timeout

 - Value is: 60.000 [seconds] (default)
 - Default is: 60.000
 - Minimum is: 0.000

 Idle timeout for PIPE sessions. If nothing have been received
 in either direction for this many seconds, the session is
 closed.

pool_req

 - Value is: 10,100,10 (default)
 - Default is: 10,100,10

 Parameters for per worker pool request memory pool.
 The three numbers are:
    min_pool            minimum size of free pool.
    max_pool            maximum size of free pool.
    max_age             max age of free element.

pool_sess

 - Value is: 10,100,10 (default)
 - Default is: 10,100,10

 Parameters for per worker pool session memory pool.
 The three numbers are:
    min_pool            minimum size of free pool.
    max_pool            maximum size of free pool.
    max_age             max age of free element.

pool_vbc

 - Value is: 10,100,10 (default)
 - Default is: 10,100,10

 Parameters for backend connection memory pool.
 The three numbers are:
    min_pool            minimum size of free pool.
    max_pool            maximum size of free pool.
    max_age             max age of free element.

pool_vbo

 - Value is: 10,100,10 (default)
 - Default is: 10,100,10

 Parameters for backend object fetch memory pool.
 The three numbers are:
    min_pool            minimum size of free pool.
    max_pool            maximum size of free pool.
    max_age             max age of free element.

prefer_ipv6

 - Value is: off [bool] (default)
 - Default is: off

 Prefer IPv6 address when connecting to backends which have both
 IPv4 and IPv6 addresses.

rush_exponent

 - Value is: 3 [requests per request] (default)
 - Default is: 3
 - Minimum is: 2

 How many parked request we start for each completed request on
 the object.
 NB: Even with the implict delay of delivery, this parameter
 controls an exponential increase in number of worker threads.

 NB: We do not know yet if it is a good idea to change this
 parameter, or if the default value is even sensible.  Caution
 is advised, and feedback is most welcome.

send_timeout

 - Value is: 600.000 [seconds] (default)
 - Default is: 600.000
 - Minimum is: 0.000

 Send timeout for client connections. If the HTTP response
 hasn't been transmitted in this many
 seconds the session is closed.
 See setsockopt(2) under SO_SNDTIMEO for more information.

 NB: This parameter may take quite some time to take (full)
 effect.

session_max

 - Value is: 100000 [sessions] (default)
 - Default is: 100000
 - Minimum is: 1000

 Maximum number of sessions we will allocate from one pool
 before just dropping connections.
 This is mostly an anti-DoS measure, and setting it plenty high
 should not hurt, as long as you have the memory for it.

shm_reclen

 - Value is: 255b [bytes] (default)
 - Default is: 255b
 - Minimum is: 16b
 - Maximum is: 4084

 Old name for vsl_reclen, use that instead.

shortlived

 - Value is: 10.000 [s] (default)
 - Default is: 10.000
 - Minimum is: 0.000

 Objects created with (ttl+grace+keep) shorter than this are
 always put in transient storage.

sigsegv_handler

 - Value is: off [bool] (default)
 - Default is: off

 Install a signal handler which tries to dump debug information
 on segmentation faults.

 NB: This parameter will not take any effect until the child
 process has been restarted.

syslog_cli_traffic

 - Value is: on [bool] (default)
 - Default is: on

 Log all CLI traffic to syslog(LOG_INFO).

tcp_keepalive_intvl

 - Value is: 75.000 [seconds] (default)
 - Default is: 75.000
 - Minimum is: 1.000
 - Maximum is: 100.000

 The number of seconds between TCP keep-alive probes.

 NB: We do not know yet if it is a good idea to change this
 parameter, or if the default value is even sensible.  Caution
 is advised, and feedback is most welcome.

tcp_keepalive_probes

 - Value is: 9 [probes] (default)
 - Default is: 9
 - Minimum is: 1
 - Maximum is: 100

 The maximum number of TCP keep-alive probes to send before
 giving up and killing the connection if no response is obtained
 from the other end.

 NB: We do not know yet if it is a good idea to change this
 parameter, or if the default value is even sensible.  Caution
 is advised, and feedback is most welcome.

tcp_keepalive_time

 - Value is: 7200.000 [seconds] (default)
 - Default is: 7200.000
 - Minimum is: 1.000
 - Maximum is: 7200.000

 The number of seconds a connection needs to be idle before TCP
 begins sending out keep-alive probes.

 NB: We do not know yet if it is a good idea to change this
 parameter, or if the default value is even sensible.  Caution
 is advised, and feedback is most welcome.

thread_pool_add_delay

 - Value is: 2.000 [seconds]
 - Default is: 0.000
 - Minimum is: 0.000

 Wait at least this long after creating a thread.

 Some (buggy) systems may need a short (sub-second) delay
 between creating threads.
 Set this to a few milliseconds if you see the 'threads_failed'
 counter grow too much.

 Setting this too high results in insuffient worker threads.

 NB: We do not know yet if it is a good idea to change this
 parameter, or if the default value is even sensible.  Caution
 is advised, and feedback is most welcome.

thread_pool_destroy_delay

 - Value is: 1.000 [seconds] (default)
 - Default is: 1.000
 - Minimum is: 0.010

 Wait this long after destroying a thread.

 This controls the decay of thread pools when idle(-ish).

 Minimum is 0.01 second.

 NB: This parameter may take quite some time to take (full)
 effect.

 NB: We do not know yet if it is a good idea to change this
 parameter, or if the default value is even sensible.  Caution
 is advised, and feedback is most welcome.

thread_pool_fail_delay

 - Value is: 0.200 [seconds] (default)
 - Default is: 0.200
 - Minimum is: 0.010

 Wait at least this long after a failed thread creation before
 trying to create another thread.

 Failure to create a worker thread is often a sign that  the end
 is near, because the process is running out of some resource. 
 This delay tries to not rush the end on needlessly.

 If thread creation failures are a problem, check that
 thread_pool_max is not too high.

 It may also help to increase thread_pool_timeout and
 thread_pool_min, to reduce the rate at which treads are
 destroyed and later recreated.

 NB: We do not know yet if it is a good idea to change this
 parameter, or if the default value is even sensible.  Caution
 is advised, and feedback is most welcome.

thread_pool_max

 - Value is: 4000 [threads]
 - Default is: 5000
 - Minimum is: 2000

 The maximum number of worker threads in each pool.

 Do not set this higher than you have to, since excess worker
 threads soak up RAM and CPU and generally just get in the way
 of getting work done.

 Minimum is 10 threads.

 NB: This parameter may take quite some time to take (full)
 effect.

thread_pool_min

 - Value is: 2000 [threads]
 - Default is: 100
 - Maximum is: 4000

 The minimum number of worker threads in each pool.

 Increasing this may help ramp up faster from low load
 situations or when threads have expired.

 Minimum is 10 threads.

 NB: This parameter may take quite some time to take (full)
 effect.

thread_pool_stack

 - Value is: 48k [bytes] (default)
 - Default is: 48k
 - Minimum is: 16k

 Worker thread stack size.
 This will likely be rounded up to a multiple of 4k (or whatever
 the page_size might be) by the kernel.

 NB: We do not know yet if it is a good idea to change this
 parameter, or if the default value is even sensible.  Caution
 is advised, and feedback is most welcome.

thread_pool_timeout

 - Value is: 300.000 [seconds] (default)
 - Default is: 300.000
 - Minimum is: 10.000

 Thread idle threshold.

 Threads in excess of thread_pool_min, which have been idle for
 at least this long, will be destroyed.

 Minimum is 10 seconds.

 NB: This parameter may take quite some time to take (full)
 effect.

 NB: We do not know yet if it is a good idea to change this
 parameter, or if the default value is even sensible.  Caution
 is advised, and feedback is most welcome.

thread_pools

 - Value is: 4 [pools]
 - Default is: 2
 - Minimum is: 1

 Number of worker thread pools.

 Increasing number of worker pools decreases lock contention.

 Too many pools waste CPU and RAM resources, and more than one
 pool for each CPU is probably detrimal to performance.

 Can be increased on the fly, but decreases require a restart to
 take effect.

 NB: This parameter may take quite some time to take (full)
 effect.

 NB: We do not know yet if it is a good idea to change this
 parameter, or if the default value is even sensible.  Caution
 is advised, and feedback is most welcome.

thread_queue_limit

 - Value is: 20 (default)
 - Default is: 20
 - Minimum is: 0

 Permitted queue length per thread-pool.

 This sets the number of requests we will queue, waiting for an
 available thread.  Above this limit sessions will be dropped
 instead of queued.

 NB: We do not know yet if it is a good idea to change this
 parameter, or if the default value is even sensible.  Caution
 is advised, and feedback is most welcome.

thread_stats_rate

 - Value is: 10 [requests] (default)
 - Default is: 10
 - Minimum is: 0

 Worker threads accumulate statistics, and dump these into the
 global stats counters if the lock is free when they finish a
 job (request/fetch etc.)
 This parameters defines the maximum number of jobs a worker
 thread may handle, before it is forced to dump its accumulated
 stats into the global counters.

 NB: We do not know yet if it is a good idea to change this
 parameter, or if the default value is even sensible.  Caution
 is advised, and feedback is most welcome.

timeout_idle

 - Value is: 5.000 [seconds] (default)
 - Default is: 5.000
 - Minimum is: 0.000

 Idle timeout for client connections.
 A connection is considered idle, until we receive a
 non-white-space character on it.

timeout_linger

 - Value is: 0.050 [seconds] (default)
 - Default is: 0.050
 - Minimum is: 0.000

 How long time the workerthread lingers on an idle session
 before handing it over to the waiter.
 When sessions are reused, as much as half of all reuses happen
 within the first 100 msec of the previous request completing.
 Setting this too high results in worker threads not doing
 anything for their keep, setting it too low just means that
 more sessions take a detour around the waiter.

 NB: We do not know yet if it is a good idea to change this
 parameter, or if the default value is even sensible.  Caution
 is advised, and feedback is most welcome.

timeout_req

 - Value is: 2.000 [seconds] (default)
 - Default is: 2.000
 - Minimum is: 0.000

 Max time to receive clients request header, measured from first
 non-white-space character to double CRNL.

user

 - Value is: varnish (999)
 - Default is: nobody (99)

 The unprivileged user to run as.

 NB: This parameter will not take any effect until the child
 process has been restarted.

 NB: This parameter only works if varnishd is run as root.

vcc_allow_inline_c

 - Value is: off [bool] (default)
 - Default is: off

 Allow inline C code in VCL.

vcc_err_unref

 - Value is: on [bool] (default)
 - Default is: on

 Unreferenced VCL objects result in error.

vcc_unsafe_path

 - Value is: on [bool] (default)
 - Default is: on

 Allow '/' in vmod & include paths.
 Allow 'import ... from ...'.

vcl_dir

 - Value is: /etc/varnish (default)
 - Default is: /etc/varnish

 Directory from which relative VCL filenames (vcl.load and
 include) are opened.

vmod_dir

 - Value is: /usr/lib64/varnish/vmods (default)
 - Default is: /usr/lib64/varnish/vmods

 Directory where VCL modules are to be found.

vsl_buffer

 - Value is: 4k [bytes] (default)
 - Default is: 4k
 - Minimum is: 267

 Bytes of (req-/backend-)workspace dedicated to buffering VSL
 records.
 Setting this too high costs memory, setting it too low will
 cause more VSL flushes and likely increase lock-contention on
 the VSL mutex.

 The minimum tracks the vsl_reclen parameter + 12 bytes.

vsl_mask

 - Value is: -VCL_trace,-WorkThread,-Hash (default)
 - Default is: -VCL_trace,-WorkThread,-Hash

 Mask individual VSL messages from being logged.
    default             Set default value

 Use +/- prefixe in front of VSL tag name, to mask/unmask
 individual VSL messages.

vsl_reclen

 - Value is: 255b [bytes] (default)
 - Default is: 255b
 - Minimum is: 16b
 - Maximum is: 4084

 Maximum number of bytes in SHM log record.

 The maximum tracks the vsl_buffer parameter - 12 bytes.

vsl_space

 - Value is: 80M [bytes] (default)
 - Default is: 80M
 - Minimum is: 1M

 The amount of space to allocate for the VSL fifo buffer in the
 VSM memory segment.  If you make this too small,
 varnish{ncsa|log} etc will not be able to keep up.  Making it
 too large just costs memory resources.

 NB: This parameter will not take any effect until the child
 process has been restarted.

vsm_space

 - Value is: 1M [bytes] (default)
 - Default is: 1M
 - Minimum is: 1M

 The amount of space to allocate for stats counters in the VSM
 memory segment.  If you make this too small, some counters will
 be invisible.  Making it too large just costs memory resources.

 NB: This parameter will not take any effect until the child
 process has been restarted.

waiter

 - Value is: epoll (possible values: epoll, poll) (default)
 - Default is: epoll (possible values: epoll, poll)

 Select the waiter kernel interface.

 NB: This parameter will not take any effect until the child
 process has been restarted.

 NB: Do not change this parameter, unless a developer tell you
 to do so.

workspace_backend

 - Value is: 64k [bytes] (default)
 - Default is: 64k
 - Minimum is: 1k

 Bytes of HTTP protocol workspace for backend HTTP req/resp.  If
 larger than 4k, use a multiple of 4k for VM efficiency.

 NB: This parameter may take quite some time to take (full)
 effect.

workspace_client

 - Value is: 64k [bytes] (default)
 - Default is: 64k
 - Minimum is: 9k

 Bytes of HTTP protocol workspace for clients HTTP req/resp.  If
 larger than 4k, use a multiple of 4k for VM efficiency.

 NB: This parameter may take quite some time to take (full)
 effect.

workspace_session

 - Value is: 384b [bytes] (default)
 - Default is: 384b
 - Minimum is: 0.25k

 Bytes of workspace for session and TCP connection addresses. 
 If larger than 4k, use a multiple of 4k for VM efficiency.

 NB: This parameter may take quite some time to take (full)
 effect.

workspace_thread

 - Value is: 2k [bytes] (default)
 - Default is: 2k
 - Minimum is: 0.25k
 - Maximum is: 8k

 Bytes of auxillary workspace per thread.
 This workspace is used for certain temporary data structures
 during the operation of a worker thread.
 One use is for the io-vectors for writing requests and
 responses to sockets, having too little space will result in
 more writev(2) system calls, having too much just wastes the
 space.

 NB: This parameter may take quite some time to take (full)
 effect.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment