1VARNISHD(1)                                                        VARNISHD(1)
2
3
4

NAME

6       varnishd - HTTP accelerator daemon
7

SYNOPSIS

9       varnishd
10              [-a [name=][listen_address[,PROTO]] [-b [host[:port]|path]] [-C]
11              [-d] [-F] [-f config] [-h type[,options]] [-I clifile] [-i iden‐
12              tity]  [-j  jail[,jailoptions]]  [-l  vsl] [-M address:port] [-n
13              workdir] [-P file] [-p param=value] [-r  param[,param...]]   [-S
14              secret-file]  [-s [name=]kind[,options]] [-T address[:port]] [-t
15              TTL] [-V] [-W waiter]
16
17       varnishd [-x parameter|vsl|cli|builtin|optstring]
18
19       varnishd [-?]
20

DESCRIPTION

22       The varnishd daemon accepts HTTP requests from clients, passes them  on
23       to a backend server and caches the returned documents to better satisfy
24       future requests for the same document.
25

OPTIONS

27   Basic options
28       -a <[name=][listen_address[,PROTO]]>
29              Accept for client requests on the specified listen_address  (see
30              below).
31
32              Name  is  referenced  in  logs.  If name is not specified, "a0",
33              "a1", etc. is used.
34
35              PROTO can be "HTTP" (the default) or "PROXY".   Both  version  1
36              and 2 of the proxy protocol can be used.
37
38              Multiple -a arguments are allowed.
39
40              If  no  -a  argument is given, the default -a :80 will listen to
41              all IPv4 and IPv6 interfaces.
42
43       -a <[name=][ip_address][:port][,PROTO]>
44              The ip_address can be a host name ("localhost"),  an  IPv4  dot‐
45              ted-quad  ("127.0.0.1")  or  an  IPv6 address enclosed in square
46              brackets ("[::1]")
47
48              If port is not specified, port 80 (http) is used.
49
50              At least one of ip_address or port is required.
51
52       -a <[name=][path][,PROTO][,user=name][,group=name][,mode=octal]>
53              (VCL4.1 and higher)
54
55              Accept connections on a Unix domain socket.  Path must be  abso‐
56              lute ("/path/to/listen.sock").
57
58              The  user,  group  and mode sub-arguments may be used to specify
59              the permissions of the socket file -- use  names  for  user  and
60              group, and a 3-digit octal value for mode.
61
62       -b <[host[:port]|path]>
63              Use  the specified host as backend server. If port is not speci‐
64              fied, the default is 8080.
65
66              If the value of -b begins with /, it is interpreted as the abso‐
67              lute  path of a Unix domain socket to which Varnish connects. In
68              that case, the value of -b must satisfy the conditions  required
69              for the .path field of a backend declaration, see vcl(7).  Back‐
70              ends with Unix socket addresses may only be used with  VCL  ver‐
71              sions >= 4.1.
72
73              -b can be used only once, and not together with f.
74
75       -f config
76              Use  the specified VCL configuration file instead of the builtin
77              default.  See vcl(7) for details on VCL syntax.
78
79              If a single -f option is used, then the VCL instance loaded from
80              the file is named "boot" and immediately becomes active. If more
81              than one -f option is used, the VCL instances are named "boot0",
82              "boot1" and so forth, in the order corresponding to the -f argu‐
83              ments, and the last one is named "boot", which becomes active.
84
85              Either -b or one or more -f options must be specified,  but  not
86              both,  and  they  cannot  both be left out, unless -d is used to
87              start varnishd in debugging mode. If the empty string is  speci‐
88              fied  as the sole -f option, then varnishd starts without start‐
89              ing the worker process, and the management process  will  accept
90              CLI  commands.   You can also combine an empty -f option with an
91              initialization script (-I option) and the child process will  be
92              started  if there is an active VCL at the end of the initializa‐
93              tion.
94
95              When used with a relative file name, config is searched  in  the
96              vcl_path.  It is possible to set this path prior to using -f op‐
97              tions with a -p option. During startup,  varnishd  doesn't  com‐
98              plain  about  unsafe  VCL  paths: unlike the varnish-cli(7) that
99              could later be accessed remotely, starting varnishd requires lo‐
100              cal privileges.
101
102       -n workdir
103              Runtime directory for the shared memory, compiled VCLs etc.
104
105              In  performance  critical applications, this directory should be
106              on a RAM backed filesystem.
107
108              Relative paths will be appended to /var/run/ (NB:  Binary  pack‐
109              ages of Varnish may have adjusted this to the platform.)
110
111              The default value is /var/run/varnishd (NB: as above.)
112
113   Documentation options
114       For  these  options, varnishd prints information to standard output and
115       exits. When a -x option is used, it must be the only option (it outputs
116       documentation in reStructuredText, aka RST).
117
118       -?
119          Print the usage message.
120
121       -x parameter
122              Print  documentation of the runtime parameters (-p options), see
123              List of Parameters.
124
125       -x vsl Print documentation of the tags used in the Varnish shared  mem‐
126              ory log, see vsl(7).
127
128       -x cli Print  documentation  of  the  command  line interface, see var‐
129              nish-cli(7).
130
131       -x builtin
132              Print the contents of the default VCL program builtin.vcl.
133
134       -x optstring
135              Print the optstring parameter to getopt(3) to help writing wrap‐
136              per scripts.
137
138   Operations options
139       -F     Do  not fork, run in the foreground. Only one of -F or -d can be
140              specified, and -F cannot be used together with -C.
141
142       -T <address[:port]>
143              Offer a management interface on the specified address and  port.
144              See varnish-cli(7) for documentation of the management commands.
145              To disable the management interface use none.
146
147       -M <address:port>
148              Connect to this port  and  offer  the  command  line  interface.
149              Think  of  it as a reverse shell. When running with -M and there
150              is no backend defined the child process  (the  cache)  will  not
151              start initially.
152
153       -P file
154              Write the PID of the process to the specified file.
155
156       -i identity
157              Specify the identity of the Varnish server. This can be accessed
158              using server.identity from VCL and with VSM_Name()  from  utili‐
159              ties.  If not specified the output of gethostname(3) is used.
160
161       -I clifile
162              Execute the management commands in the file given as clifile be‐
163              fore the the worker process starts, see CLI Command File.
164
165   Tuning options
166       -t TTL Specifies the default time to live  (TTL)  for  cached  objects.
167              This  is  a shortcut for specifying the default_ttl run-time pa‐
168              rameter.
169
170       -p <param=value>
171              Set the parameter specified by param to the specified value, see
172              List of Parameters for details. This option can be used multiple
173              times to specify multiple parameters.
174
175       -s <[name=]type[,options]>
176              Use the specified storage backend. See Storage Backend section.
177
178              This option can be used multiple times to specify multiple stor‐
179              age  files. Name is referenced in logs, VCL, statistics, etc. If
180              name is not specified, "s0", "s1" and so forth is used.
181
182       -l <vsl>
183              Specifies size of the space for the VSL records,  shorthand  for
184              -p  vsl_space=<vsl>.  Scaling  suffixes  like 'K' and 'M' can be
185              used up to (G)igabytes. See vsl_space for more information.
186
187   Security options
188       -r <param[,param...]>
189              Make the listed parameters read only. This gives the system  ad‐
190              ministrator  a  way  to limit what the Varnish CLI can do.  Con‐
191              sider making parameters such as  cc_command,  vcc_allow_inline_c
192              and  vmod_path read only as these can potentially be used to es‐
193              calate privileges from the CLI.
194
195       -S secret-file
196              Path to a file containing a secret used for  authorizing  access
197              to the management port. To disable authentication use none.
198
199              If this argument is not provided, a secret drawn from the system
200              PRNG will be written to a file called _.secret  in  the  working
201              directory  (see opt_n) with default ownership and permissions of
202              the user having started varnish.
203
204              Thus, users wishing to delegate control over varnish will proba‐
205              bly want to create a custom secret file with appropriate permis‐
206              sions (ie. readable by a unix group to delegate control to).
207
208       -j <jail[,jailoptions]>
209              Specify the jailing mechanism to use. See Jail section.
210
211   Advanced, development and debugging options
212       -d     Enables debugging mode: The parent process  runs  in  the  fore‐
213              ground  with  a  CLI  connection  on stdin/stdout, and the child
214              process must be started explicitly with a CLI command. Terminat‐
215              ing the parent process will also terminate the child.
216
217              Only one of -d or -F can be specified, and -d cannot be used to‐
218              gether with -C.
219
220       -C     Print VCL code compiled to C language and exit. Specify the  VCL
221              file to compile with the -f option. Either -f or -b must be used
222              with -C, and -C cannot be used with -F or -d.
223
224       -V     Display the version number and exit. This must be the  only  op‐
225              tion.
226
227       -h <type[,options]>
228              Specifies  the  hash algorithm. See Hash Algorithm section for a
229              list of supported algorithms.
230
231       -W waiter
232              Specifies the waiter type to use.
233
234   Hash Algorithm
235       The following hash algorithms are available:
236
237       -h critbit
238              self-scaling tree structure. The default hash algorithm in  Var‐
239              nish  Cache 2.1 and onwards. In comparison to a more traditional
240              B tree the critbit tree is almost completely  lockless.  Do  not
241              change this unless you are certain what you're doing.
242
243       -h simple_list
244              A  simple  doubly-linked  list.   Not recommended for production
245              use.
246
247       -h <classic[,buckets]>
248              A standard hash table. The hash key is the CRC32 of the object's
249              URL  modulo the size of the hash table.  Each table entry points
250              to a list of elements which share the same hash key. The buckets
251              parameter  specifies  the  number  of entries in the hash table.
252              The default is 16383.
253
254   Storage Backend
255       The argument format to define storage backends is:
256
257       -s <[name]=kind[,options]>
258              If name is omitted, Varnish will name storages sN, starting with
259              s0 and incrementing N for every new storage.
260
261              For kind and options see details below.
262
263       Storages can be used in vcl as storage.name, so, for example if myStor‐
264       age was defined by -s myStorage=malloc,5G, it could be used in VCL like
265       so:
266
267          set beresp.storage = storage.myStorage;
268
269       A  special  name  is  Transient  which  is  the default storage for un‐
270       cacheable  objects  as  resulting  from   a   pass,   hit-for-miss   or
271       hit-for-pass.
272
273       If no -s options are given, the default is:
274
275          -s default,100m
276
277       If  no  Transient storage is defined, the default is an unbound default
278       storage as if defined as:
279
280          -s Transient=default
281
282       The following storage types and options are available:
283
284       -s <default[,size]>
285              The default storage type resolves to umem  where  available  and
286              malloc otherwise.
287
288       -s <malloc[,size]>
289              malloc is a memory based backend.
290
291       -s <umem[,size]>
292              umem is a storage backend which is more efficient than malloc on
293              platforms where it is available.
294
295              See the section on umem in chapter Storage backends of The  Var‐
296              nish Users Guide for details.
297
298       -s <file,path[,size[,granularity[,advice]]]>
299              The file backend stores data in a file on disk. The file will be
300              accessed using mmap. Note that this  storage  provide  no  cache
301              persistence.
302
303              The  path  is mandatory. If path points to a directory, a tempo‐
304              rary file will be created in that directory and immediately  un‐
305              linked.  If path points to a non-existing file, the file will be
306              created.
307
308              If size is omitted, and path points to an existing file  with  a
309              size  greater  than zero, the size of that file will be used. If
310              not, an error is reported.
311
312              Granularity sets the allocation block size. Defaults to the sys‐
313              tem page size or the filesystem block size, whichever is larger.
314
315              Advice  tells the kernel how varnishd expects to use this mapped
316              region so that the kernel can choose the appropriate  read-ahead
317              and  caching  techniques. Possible values are normal, random and
318              sequential,  corresponding  to  MADV_NORMAL,   MADV_RANDOM   and
319              MADV_SEQUENTIAL  madvise()  advice  argument,  respectively. De‐
320              faults to random.
321
322       -s <persistent,path,size>
323              Persistent storage. Varnish will store objects in a  file  in  a
324              manner  that  will secure the survival of most of the objects in
325              the event of a planned or unplanned  shutdown  of  Varnish.  The
326              persistent  storage backend has multiple issues with it and will
327              likely be removed from a future version of Varnish.
328
329   Jail
330       Varnish jails are a generalization over various platform specific meth‐
331       ods  to  reduce the privileges of varnish processes. They may have spe‐
332       cific options. Available jails are:
333
334       -j <solaris[,worker=`privspec`]>
335              Reduce privileges(5) for varnishd and sub-process to  the  mini‐
336              mally  required  set. Only available on platforms which have the
337              setppriv(2) call.
338
339              The optional worker argument  can  be  used  to  pass  a  privi‐
340              lege-specification  (see ppriv(1)) by which to extend the effec‐
341              tive set of the varnish worker process.  While  extended  privi‐
342              leges may be required by custom vmods, it is always the more se‐
343              cure to not use the worker option.
344
345              Example to grant basic privileges to the worker process:
346
347                 -j solaris,worker=basic
348
349       -j <unix[,user=`user`][,ccgroup=`group`][,workuser=`user`]>
350              Default on all other platforms when varnishd is started with  an
351              effective uid of 0 ("as root").
352
353              With  the  unix jail mechanism activated, varnish will switch to
354              an alternative user for subprocesses and  change  the  effective
355              uid of the master process whenever possible.
356
357              The  optional  user argument specifies which alternative user to
358              use. It defaults to varnish.
359
360              The optional ccgroup argument specifies a group to add  to  var‐
361              nish  subprocesses requiring access to a c-compiler. There is no
362              default.
363
364              The optional workuser argument specifies an alternative user  to
365              use for the worker process. It defaults to vcache.
366
367       -j none
368              last  resort jail choice: With jail mechanism none, varnish will
369              run all processes with the privileges it was started with.
370
371   Management Interface
372       If the -T option was specified, varnishd will offer a command-line man‐
373       agement  interface  on the specified address and port.  The recommended
374       way of connecting to the command-line management interface  is  through
375       varnishadm(1).
376
377       The commands available are documented in varnish-cli(7).
378
379   CLI Command File
380       The  -I  option  makes it possible to run arbitrary management commands
381       when varnishd is launched, before the worker  process  is  started.  In
382       particular,  this  is  the  way to load configurations, apply labels to
383       them, and make a VCL instance active that uses those labels on startup:
384
385          vcl.load panic /etc/varnish_panic.vcl
386          vcl.load siteA0 /etc/varnish_siteA.vcl
387          vcl.load siteB0 /etc/varnish_siteB.vcl
388          vcl.load siteC0 /etc/varnish_siteC.vcl
389          vcl.label siteA siteA0
390          vcl.label siteB siteB0
391          vcl.label siteC siteC0
392          vcl.load main /etc/varnish_main.vcl
393          vcl.use main
394
395       Every line in the file, including the last line, must be terminated  by
396       a newline or carriage return.
397
398       If  a  command in the file is prefixed with '-', failure will not abort
399       the startup.
400
401       Note that it is necessary to include an explicit vcl.use command to se‐
402       lect  which  VCL  should  be the active VCL when relying on CLI Command
403       File to load the configurations at startup.
404

RUN TIME PARAMETERS

406   Run Time Parameter Flags
407       Runtime parameters are marked with shorthand flags to  avoid  repeating
408       the  same  text  over  and  over in the table below. The meaning of the
409       flags are:
410
411experimental
412
413         We have no solid information about good/bad/optimal values  for  this
414         parameter.  Feedback  with  experience and observations are most wel‐
415         come.
416
417delayed
418
419         This parameter can be changed on the fly, but will  not  take  effect
420         immediately.
421
422restart
423
424         The worker process must be stopped and restarted, before this parame‐
425         ter takes effect.
426
427reload
428
429         The VCL programs must be reloaded for this parameter to take effect.
430
431wizard
432
433         Do not touch unless you really know what you're doing.
434
435only_root
436
437         Only works if varnishd is running as root.
438
439   Default Value Exceptions on 32 bit Systems
440       Be aware that on 32 bit systems, certain default or maximum values  are
441       reduced  relative  to  the values listed below, in order to conserve VM
442       space:
443
444       • workspace_client: 24k
445
446       • workspace_backend: 20k
447
448       • http_resp_size: 8k
449
450       • http_req_size: 12k
451
452       • gzip_buffer: 4k
453
454       • vsl_buffer: 4k
455
456       • vsl_space: 1G (maximum)
457
458       • thread_pool_stack: 64k
459
460   List of Parameters
461       This text is produced from the same text you will find in  the  CLI  if
462       you use the param.show command:
463
464   accept_filter
465       NB:  This  parameter depends on a feature which is not available on all
466       platforms.
467
468          • Units: bool
469
470          • Default: on (if your platform supports accept filters)
471
472       Enable kernel accept-filters. This may require a kernel  module  to  be
473       loaded to have an effect when enabled.
474
475       Enabling  accept_filter  may  prevent some requests to reach Varnish in
476       the first place. Malformed requests may go unnoticed and  not  increase
477       the  client_req_400  counter.  GET  or HEAD requests with a body may be
478       blocked altogether.
479
480   acceptor_sleep_decay
481          • Default: 0.9
482
483          • Minimum: 0
484
485          • Maximum: 1
486
487          • Flags: experimental
488
489       If we run out of resources, such as file descriptors or worker threads,
490       the  acceptor  will sleep between accepts.  This parameter (multiplica‐
491       tively) reduce the sleep duration for each successful accept. (ie:  0.9
492       = reduce by 10%)
493
494   acceptor_sleep_incr
495          • Units: seconds
496
497          • Default: 0.000
498
499          • Minimum: 0.000
500
501          • Maximum: 1.000
502
503          • Flags: experimental
504
505       If we run out of resources, such as file descriptors or worker threads,
506       the acceptor will sleep between accepts.  This  parameter  control  how
507       much longer we sleep, each time we fail to accept a new connection.
508
509   acceptor_sleep_max
510          • Units: seconds
511
512          • Default: 0.050
513
514          • Minimum: 0.000
515
516          • Maximum: 10.000
517
518          • Flags: experimental
519
520       If we run out of resources, such as file descriptors or worker threads,
521       the acceptor will sleep between accepts.   This  parameter  limits  how
522       long it can sleep between attempts to accept new connections.
523
524   auto_restart
525          • Units: bool
526
527          • Default: on
528
529       Automatically restart the child/worker process if it dies.
530
531   backend_idle_timeout
532          • Units: seconds
533
534          • Default: 60.000
535
536          • Minimum: 1.000
537
538       Timeout before we close unused backend connections.
539
540   backend_local_error_holddown
541          • Units: seconds
542
543          • Default: 10.000
544
545          • Minimum: 0.000
546
547          • Flags: experimental
548
549       When  connecting  to backends, certain error codes (EADDRNOTAVAIL, EAC‐
550       CESS, EPERM) signal a local resource shortage  or  configuration  issue
551       for  which retrying connection attempts may worsen the situation due to
552       the complexity of the operations involved in the kernel.  This  parame‐
553       ter prevents repeated connection attempts for the configured duration.
554
555   backend_remote_error_holddown
556          • Units: seconds
557
558          • Default: 0.250
559
560          • Minimum: 0.000
561
562          • Flags: experimental
563
564       When connecting to backends, certain error codes (ECONNREFUSED, ENETUN‐
565       REACH) signal fundamental connection issues such as the backend not ac‐
566       cepting  connections  or routing problems for which repeated connection
567       attempts are considered useless This parameter prevents  repeated  con‐
568       nection attempts for the configured duration.
569
570   ban_cutoff
571          • Units: bans
572
573          • Default: 0
574
575          • Minimum: 0
576
577          • Flags: experimental
578
579       Expurge long tail content from the cache to keep the number of bans be‐
580       low this value. 0 disables.
581
582       When this parameter is set to a non-zero value, the ban lurker  contin‐
583       ues  to  work  the ban list as usual top to bottom, but when it reaches
584       the ban_cutoff-th ban, it treats all objects as if they matched  a  ban
585       and  expurges  them  from  cache.  As  actively used objects get tested
586       against the ban list at request time and thus are likely to be  associ‐
587       ated with bans near the top of the ban list, with ban_cutoff, least re‐
588       cently accessed objects (the "long tail") are removed.
589
590       This parameter is a safety net to avoid bad response times due to  bans
591       being  tested at lookup time. Setting a cutoff trades response time for
592       cache  efficiency.   The   recommended   value   is   proportional   to
593       rate(bans_lurker_tests_tested)  /  n_objects  while  the  ban lurker is
594       working, which is the number of bans the system can sustain. The  addi‐
595       tional latency due to request ban testing is in the order of ban_cutoff
596       /      rate(bans_lurker_tests_tested).      For      example,       for
597       rate(bans_lurker_tests_tested) = 2M/s and a tolerable latency of 100ms,
598       a good value for ban_cutoff may be 200K.
599
600   ban_dups
601          • Units: bool
602
603          • Default: on
604
605       Eliminate older identical bans when a new ban is added.  This saves CPU
606       cycles  by not comparing objects to identical bans.  This is a waste of
607       time if you have many bans which are never identical.
608
609   ban_lurker_age
610          • Units: seconds
611
612          • Default: 60.000
613
614          • Minimum: 0.000
615
616       The ban lurker will ignore bans until they are this old.  When a ban is
617       added,  the  active traffic will be tested against it as part of object
618       lookup.  Because many applications issue bans in bursts, this parameter
619       holds the ban-lurker off until the rush is over.  This should be set to
620       the approximate time which a ban-burst takes.
621
622   ban_lurker_batch
623          • Default: 1000
624
625          • Minimum: 1
626
627       The ban lurker sleeps ${ban_lurker_sleep} after examining this many ob‐
628       jects.  Use this to pace the ban-lurker if it eats too many resources.
629
630   ban_lurker_holdoff
631          • Units: seconds
632
633          • Default: 0.010
634
635          • Minimum: 0.000
636
637          • Flags: experimental
638
639       How  long  the  ban lurker sleeps when giving way to lookup due to lock
640       contention.
641
642   ban_lurker_sleep
643          • Units: seconds
644
645          • Default: 0.010
646
647          • Minimum: 0.000
648
649       How long the ban lurker sleeps after examining ${ban_lurker_batch}  ob‐
650       jects.   Use this to pace the ban-lurker if it eats too many resources.
651       A value of zero will disable the ban lurker entirely.
652
653   between_bytes_timeout
654          • Units: seconds
655
656          • Default: 60.000
657
658          • Minimum: 0.000
659
660       We only wait for this many seconds  between  bytes  received  from  the
661       backend  before  giving  up  the fetch.  VCL values, per backend or per
662       backend request take precedence.  This  parameter  does  not  apply  to
663       pipe'ed requests.
664
665   cc_command
666          • Default:  exec clang -g -O2 -Wall -Werror -Wno-error=unused-result
667            -fstack-protector-strong -Werror  -Wall  -Wcast-align  -Wcast-qual
668            -Wchar-subscripts   -Wempty-body   -Wextra  -Wformat  -Wformat-y2k
669            -Wformat -Wformat-zero-length -Wmissing-field-initializers -Wmiss‐
670            ing-prototypes   -Wnested-externs  -Wpointer-arith  -Wpointer-sign
671            -Wreturn-type   -Wshadow   -Wstrict-aliasing   -Wstrict-prototypes
672            -Wstring-plus-int   -Wswitch   -Wunused-parameter  -Wunused-result
673            -Wwrite-strings    -Wno-old-style-definition     -Wno-sign-compare
674            -Wno-implicit-fallthrough       -Wno-missing-variable-declarations
675            -Wno-nullability-completeness     -fstack-protector     -Wno-miss‐
676            ing-field-initializers -pthread  -fpic -shared -Wl,-x -o %o %s
677
678          • Flags: must_reload
679
680       Command  used  for  compiling the C source code to a dlopen(3) loadable
681       object.  Any occurrence of %s in the string will be replaced  with  the
682       source file name, and %o will be replaced with the output file name.
683
684   cli_limit
685          • Units: bytes
686
687          • Default: 48k
688
689          • Minimum: 128b
690
691          • Maximum: 99999999b
692
693       Maximum  size of CLI response.  If the response exceeds this limit, the
694       response code will be 201 instead of 200 and the last line  will  indi‐
695       cate the truncation.
696
697   cli_timeout
698          • Units: seconds
699
700          • Default: 60.000
701
702          • Minimum: 0.000
703
704       Timeout for the childs replies to CLI requests from the mgt_param.
705
706   clock_skew
707          • Units: seconds
708
709          • Default: 10
710
711          • Minimum: 0
712
713       How much clockskew we are willing to accept between the backend and our
714       own clock.
715
716   clock_step
717          • Units: seconds
718
719          • Default: 1.000
720
721          • Minimum: 0.000
722
723       How much observed clock step we are willing to accept before we panic.
724
725   connect_timeout
726          • Units: seconds
727
728          • Default: 3.500
729
730          • Minimum: 0.000
731
732       Default connection timeout for backend connections. We only try to con‐
733       nect  to  the  backend  for this many seconds before giving up. VCL can
734       override this default value for each backend and backend request.
735
736   critbit_cooloff
737          • Units: seconds
738
739          • Default: 180.000
740
741          • Minimum: 60.000
742
743          • Maximum: 254.000
744
745          • Flags: wizard
746
747       How long the critbit hasher keeps deleted objheads on the cooloff list.
748
749   debug
750          • Default: none
751
752       Enable/Disable various kinds of debugging.
753
754          none   Disable all debugging
755
756       Use +/- prefix to set/reset individual bits:
757
758          req_state
759                 VSL Request state engine
760
761          workspace
762                 VSL Workspace operations
763
764          waitinglist
765                 VSL Waitinglist events
766
767          syncvsl
768                 Make VSL synchronous
769
770          hashedge
771                 Edge cases in Hash
772
773          vclrel Rapid VCL release
774
775          lurker VSL Ban lurker
776
777          esi_chop
778                 Chop ESI fetch to bits
779
780          flush_head
781                 Flush after http1 head
782
783          vtc_mode
784                 Varnishtest Mode
785
786          witness
787                 Emit WITNESS lock records
788
789          vsm_keep
790                 Keep the VSM file on restart
791
792          drop_pools
793                 Drop thread pools (testing)
794
795          slow_acceptor
796                 Slow down Acceptor
797
798          h2_nocheck
799                 Disable various H2 checks
800
801          vmod_so_keep
802                 Keep copied VMOD libraries
803
804          processors
805                 Fetch/Deliver processors
806
807          protocol
808                 Protocol debugging
809
810          vcl_keep
811                 Keep VCL C and so files
812
813          lck    Additional lock statistics
814
815   default_grace
816          • Units: seconds
817
818          • Default: 10.000
819
820          • Minimum: 0.000
821
822          • Flags: obj_sticky
823
824       Default grace period.  We will deliver an object this long after it has
825       expired, provided another thread is attempting to get a new copy.
826
827   default_keep
828          • Units: seconds
829
830          • Default: 0.000
831
832          • Minimum: 0.000
833
834          • Flags: obj_sticky
835
836       Default  keep  period.  We will keep a useless object around this long,
837       making it available for conditional backend fetches.  That  means  that
838       the object will be removed from the cache at the end of ttl+grace+keep.
839
840   default_ttl
841          • Units: seconds
842
843          • Default: 120.000
844
845          • Minimum: 0.000
846
847          • Flags: obj_sticky
848
849       The TTL assigned to objects if neither the backend nor the VCL code as‐
850       signs one.
851
852   feature
853          • Default: +validate_headers
854
855       Enable/Disable various minor features.
856
857          default
858                 Set default value
859
860          none   Disable all features.
861
862       Use +/- prefix to enable/disable individual feature:
863
864          http2  Enable HTTP/2 protocol support.
865
866          short_panic
867                 Short panic message.
868
869          no_coredump
870                 No coredumps.  Must be set before child process starts.
871
872          https_scheme
873                 Extract host from full URI in the HTTP/1 request line, if the
874                 scheme is https.
875
876          http_date_postel
877                 Tolerate non compliant timestamp headers like Date, Last-Mod‐
878                 ified, Expires etc.
879
880          esi_ignore_https
881                 Convert <esi:include src"https://... to http://...
882
883          esi_disable_xml_check
884                 Allow ESI processing on non-XML ESI bodies
885
886          esi_ignore_other_elements
887                 Ignore XML syntax errors in ESI bodies.
888
889          esi_remove_bom
890                 Ignore UTF-8 BOM in ESI bodies.
891
892          wait_silo
893                 Wait for persistent silos to completely load  before  serving
894                 requests.
895
896          validate_headers
897                 Validate all header set operations to conform to RFC7230.
898
899          busy_stats_rate
900                 Make busy workers comply with thread_stats_rate.
901
902   fetch_chunksize
903          • Units: bytes
904
905          • Default: 16k
906
907          • Minimum: 4k
908
909          • Flags: experimental
910
911       The  default  chunksize used by fetcher. This should be bigger than the
912       majority of objects with short TTLs.   Internal  limits  in  the  stor‐
913       age_file module makes increases above 128kb a dubious idea.
914
915   fetch_maxchunksize
916          • Units: bytes
917
918          • Default: 0.25G
919
920          • Minimum: 64k
921
922          • Flags: experimental
923
924       The  maximum chunksize we attempt to allocate from storage. Making this
925       too large may cause delays and storage fragmentation.
926
927   first_byte_timeout
928          • Units: seconds
929
930          • Default: 60.000
931
932          • Minimum: 0.000
933
934       Default timeout for receiving first byte from backend. We only wait for
935       this  many  seconds for the first byte before giving up.  VCL can over‐
936       ride this default value for each backend and backend request.  This pa‐
937       rameter does not apply to pipe'ed requests.
938
939   gzip_buffer
940          • Units: bytes
941
942          • Default: 32k
943
944          • Minimum: 2k
945
946          • Flags: experimental
947
948       Size of malloc buffer used for gzip processing.  These buffers are used
949       for in-transit data, for  instance  gunzip'ed  data  being  sent  to  a
950       client.Making  this  space to small results in more overhead, writes to
951       sockets etc, making it too big is probably just a waste of memory.
952
953   gzip_level
954          • Default: 6
955
956          • Minimum: 0
957
958          • Maximum: 9
959
960       Gzip compression level: 0=debug, 1=fast, 9=best
961
962   gzip_memlevel
963          • Default: 8
964
965          • Minimum: 1
966
967          • Maximum: 9
968
969       Gzip memory level 1=slow/least, 9=fast/most compression.  Memory impact
970       is 1=1k, 2=2k, ... 9=256k.
971
972   h2_header_table_size
973          • Units: bytes
974
975          • Default: 4k
976
977          • Minimum: 0b
978
979       HTTP2  header  table  size.  This is the size that will be used for the
980       HPACK dynamic decoding table.
981
982   h2_initial_window_size
983          • Units: bytes
984
985          • Default: 65535b
986
987          • Minimum: 65535b
988
989          • Maximum: 2147483647b
990
991       HTTP2 initial flow control window size.
992
993   h2_max_concurrent_streams
994          • Units: streams
995
996          • Default: 100
997
998          • Minimum: 0
999
1000       HTTP2 Maximum number of concurrent streams.  This is the number of  re‐
1001       quests  that  can be active at the same time for a single HTTP2 connec‐
1002       tion.
1003
1004   h2_max_frame_size
1005          • Units: bytes
1006
1007          • Default: 16k
1008
1009          • Minimum: 16k
1010
1011          • Maximum: 16777215b
1012
1013       HTTP2 maximum per frame payload size we are willing to accept.
1014
1015   h2_max_header_list_size
1016          • Units: bytes
1017
1018          • Default: 2147483647b
1019
1020          • Minimum: 0b
1021
1022       HTTP2 maximum size of an uncompressed header list.
1023
1024   h2_rx_window_increment
1025          • Units: bytes
1026
1027          • Default: 1M
1028
1029          • Minimum: 1M
1030
1031          • Maximum: 1G
1032
1033          • Flags: wizard
1034
1035       HTTP2 Receive Window Increments.  How big credits we send in WINDOW_UP‐
1036       DATE frames Only affects incoming request bodies (ie: POST, PUT etc.)
1037
1038   h2_rx_window_low_water
1039          • Units: bytes
1040
1041          • Default: 10M
1042
1043          • Minimum: 65535b
1044
1045          • Maximum: 1G
1046
1047          • Flags: wizard
1048
1049       HTTP2  Receive  Window  low  water  mark.  We try to keep the window at
1050       least this big Only affects incoming  request  bodies  (ie:  POST,  PUT
1051       etc.)
1052
1053   h2_rxbuf_storage
1054          • Default: Transient
1055
1056          • Flags: must_restart
1057
1058       The  name  of the storage backend that HTTP/2 receive buffers should be
1059       allocated from.
1060
1061   http1_iovs
1062          • Units: struct iovec (=16 bytes)
1063
1064          • Default: 64
1065
1066          • Minimum: 5
1067
1068          • Maximum: 1024
1069
1070          • Flags: wizard
1071
1072       Number of io vectors to allocate for HTTP1  protocol  transmission.   A
1073       HTTP1  header  needs  7  +  2  per  HTTP  header field.  Allocated from
1074       workspace_thread.
1075
1076   http_gzip_support
1077          • Units: bool
1078
1079          • Default: on
1080
1081       Enable gzip support. When enabled Varnish  request  compressed  objects
1082       from  the  backend and store them compressed. If a client does not sup‐
1083       port gzip encoding Varnish will uncompress compressed  objects  on  de‐
1084       mand.  Varnish  will also rewrite the Accept-Encoding header of clients
1085       indicating support for gzip to:
1086              Accept-Encoding: gzip
1087
1088       Clients that do not support gzip will have their Accept-Encoding header
1089       removed. For more information on how gzip is implemented please see the
1090       chapter on gzip in the Varnish reference.
1091
1092       When  gzip  support  is  disabled  the  variables  beresp.do_gzip   and
1093       beresp.do_gunzip have no effect in VCL.
1094
1095   http_max_hdr
1096          • Units: header lines
1097
1098          • Default: 64
1099
1100          • Minimum: 32
1101
1102          • Maximum: 65535
1103
1104       Maximum    number    of    HTTP    header    lines    we    allow    in
1105       {req|resp|bereq|beresp}.http (obj.http is autosized to the exact number
1106       of  headers).   Cheap,  ~20  bytes, in terms of workspace memory.  Note
1107       that the first line occupies five header lines.
1108
1109   http_range_support
1110          • Units: bool
1111
1112          • Default: on
1113
1114       Enable support for HTTP Range headers.
1115
1116   http_req_hdr_len
1117          • Units: bytes
1118
1119          • Default: 8k
1120
1121          • Minimum: 40b
1122
1123       Maximum length of any HTTP client request header we  will  allow.   The
1124       limit is inclusive its continuation lines.
1125
1126   http_req_size
1127          • Units: bytes
1128
1129          • Default: 32k
1130
1131          • Minimum: 0.25k
1132
1133       Maximum number of bytes of HTTP client request we will deal with.  This
1134       is a limit on all bytes up to the double blank line which ends the HTTP
1135       request.   The  memory  for  the  request  is allocated from the client
1136       workspace (param: workspace_client) and this parameter limits how  much
1137       of that the request is allowed to take up.
1138
1139   http_resp_hdr_len
1140          • Units: bytes
1141
1142          • Default: 8k
1143
1144          • Minimum: 40b
1145
1146       Maximum  length of any HTTP backend response header we will allow.  The
1147       limit is inclusive its continuation lines.
1148
1149   http_resp_size
1150          • Units: bytes
1151
1152          • Default: 32k
1153
1154          • Minimum: 0.25k
1155
1156       Maximum number of bytes of HTTP backend response  we  will  deal  with.
1157       This is a limit on all bytes up to the double blank line which ends the
1158       HTTP response.  The memory for the response is allocated from the back‐
1159       end  workspace (param: workspace_backend) and this parameter limits how
1160       much of that the response is allowed to take up.
1161
1162   idle_send_timeout
1163          • Units: seconds
1164
1165          • Default: 60.000
1166
1167          • Minimum: 0.000
1168
1169          • Flags: delayed
1170
1171       Send timeout for individual pieces of data on client  connections.  May
1172       get extended if 'send_timeout' applies.
1173
1174       When this timeout is hit, the session is closed.
1175
1176       See  the  man page for setsockopt(2) or socket(7) under SO_SNDTIMEO for
1177       more information.
1178
1179   listen_depth
1180          • Units: connections
1181
1182          • Default: 1024
1183
1184          • Minimum: 0
1185
1186          • Flags: must_restart
1187
1188       Listen queue depth.
1189
1190   lru_interval
1191          • Units: seconds
1192
1193          • Default: 2.000
1194
1195          • Minimum: 0.000
1196
1197          • Flags: experimental
1198
1199       Grace period before object moves on LRU list.  Objects are  only  moved
1200       to  the front of the LRU list if they have not been moved there already
1201       inside this timeout period.  This reduces the amount of lock operations
1202       necessary for LRU list access.
1203
1204   max_esi_depth
1205          • Units: levels
1206
1207          • Default: 5
1208
1209          • Minimum: 0
1210
1211       Maximum depth of esi:include processing.
1212
1213   max_restarts
1214          • Units: restarts
1215
1216          • Default: 4
1217
1218          • Minimum: 0
1219
1220       Upper limit on how many times a request can restart.
1221
1222   max_retries
1223          • Units: retries
1224
1225          • Default: 4
1226
1227          • Minimum: 0
1228
1229       Upper limit on how many times a backend fetch can retry.
1230
1231   max_vcl
1232          • Default: 100
1233
1234          • Minimum: 0
1235
1236       Threshold  of  loaded VCL programs.  (VCL labels are not counted.)  Pa‐
1237       rameter max_vcl_handling determines behaviour.
1238
1239   max_vcl_handling
1240          • Default: 1
1241
1242          • Minimum: 0
1243
1244          • Maximum: 2
1245
1246       Behaviour when attempting to exceed max_vcl loaded VCL.
1247
1248       • 0 - Ignore max_vcl parameter.
1249
1250       • 1 - Issue warning.
1251
1252       • 2 - Refuse loading VCLs.
1253
1254   nuke_limit
1255          • Units: allocations
1256
1257          • Default: 50
1258
1259          • Minimum: 0
1260
1261          • Flags: experimental
1262
1263       Maximum number of objects we attempt to nuke in order to make space for
1264       a object body.
1265
1266   pcre2_depth_limit
1267          • Default: 20
1268
1269          • Minimum: 1
1270
1271       The   recursion   depth-limit   for  the  internal  match  logic  in  a
1272       pcre2_match().
1273
1274       (See: pcre2_set_depth_limit() in pcre2 docs.)
1275
1276       This puts an upper limit on the amount of stack used by PCRE2 for  cer‐
1277       tain classes of regular expressions.
1278
1279       We  have  set the default value low in order to prevent crashes, at the
1280       cost of possible regexp matching failures.
1281
1282       Matching failures will show up in the log as VCL_Error messages.
1283
1284   pcre2_jit_compilation
1285          • Units: bool
1286
1287          • Default: on
1288
1289       Use the pcre2 JIT compiler if available.
1290
1291   pcre2_match_limit
1292          • Default: 10000
1293
1294          • Minimum: 1
1295
1296       The limit for the number of  calls  to  the  internal  match  logic  in
1297       pcre2_match().
1298
1299       (See: pcre2_set_match_limit() in pcre2 docs.)
1300
1301       This parameter limits how much CPU time regular expression matching can
1302       soak up.
1303
1304   ping_interval
1305          • Units: seconds
1306
1307          • Default: 3
1308
1309          • Minimum: 0
1310
1311          • Flags: must_restart
1312
1313       Interval between pings from parent to child.  Zero will disable pinging
1314       entirely, which makes it possible to attach a debugger to the child.
1315
1316   pipe_sess_max
1317          • Units: connections
1318
1319          • Default: 0
1320
1321          • Minimum: 0
1322
1323       Maximum number of sessions dedicated to pipe transactions.
1324
1325   pipe_timeout
1326          • Units: seconds
1327
1328          • Default: 60.000
1329
1330          • Minimum: 0.000
1331
1332       Idle timeout for PIPE sessions. If nothing have been received in either
1333       direction for this many seconds, the session is closed.
1334
1335   pool_req
1336          • Default: 10,100,10
1337
1338       Parameters for per worker pool request memory pool.
1339
1340       The three numbers are:
1341
1342          min_pool
1343                 minimum size of free pool.
1344
1345          max_pool
1346                 maximum size of free pool.
1347
1348          max_age
1349                 max age of free element.
1350
1351   pool_sess
1352          • Default: 10,100,10
1353
1354       Parameters for per worker pool session memory pool.
1355
1356       The three numbers are:
1357
1358          min_pool
1359                 minimum size of free pool.
1360
1361          max_pool
1362                 maximum size of free pool.
1363
1364          max_age
1365                 max age of free element.
1366
1367   pool_vbo
1368          • Default: 10,100,10
1369
1370       Parameters for backend object fetch memory pool.
1371
1372       The three numbers are:
1373
1374          min_pool
1375                 minimum size of free pool.
1376
1377          max_pool
1378                 maximum size of free pool.
1379
1380          max_age
1381                 max age of free element.
1382
1383   prefer_ipv6
1384          • Units: bool
1385
1386          • Default: off
1387
1388       Prefer IPv6 address when connecting to backends which  have  both  IPv4
1389       and IPv6 addresses.
1390
1391   rush_exponent
1392          • Units: requests per request
1393
1394          • Default: 3
1395
1396          • Minimum: 2
1397
1398          • Flags: experimental
1399
1400       How  many parked request we start for each completed request on the ob‐
1401       ject.  NB: Even with the implict delay of delivery, this parameter con‐
1402       trols an exponential increase in number of worker threads.
1403
1404   send_timeout
1405          • Units: seconds
1406
1407          • Default: 600.000
1408
1409          • Minimum: 0.000
1410
1411          • Flags: delayed
1412
1413       Total  timeout for ordinary HTTP1 responses. Does not apply to some in‐
1414       ternally generated errors and pipe mode.
1415
1416       When 'idle_send_timeout' is hit while sending an  HTTP1  response,  the
1417       timeout is extended unless the total time already taken for sending the
1418       response in its entirety exceeds this many seconds.
1419
1420       When this timeout is hit, the session is closed
1421
1422   shortlived
1423          • Units: seconds
1424
1425          • Default: 10.000
1426
1427          • Minimum: 0.000
1428
1429       Objects created with (ttl+grace+keep) shorter than this are always  put
1430       in transient storage.
1431
1432   sigsegv_handler
1433          • Units: bool
1434
1435          • Default: on
1436
1437          • Flags: must_restart
1438
1439       Install  a signal handler which tries to dump debug information on seg‐
1440       mentation faults, bus errors and abort signals.
1441
1442   syslog_cli_traffic
1443          • Units: bool
1444
1445          • Default: on
1446
1447       Log all CLI traffic to syslog(LOG_INFO).
1448
1449   tcp_fastopen
1450       NB: This parameter depends on a feature which is not available  on  all
1451       platforms.
1452
1453          • Units: bool
1454
1455          • Default: off
1456
1457          • Flags: must_restart
1458
1459       Enable TCP Fast Open extension.
1460
1461   tcp_keepalive_intvl
1462       NB:  This  parameter depends on a feature which is not available on all
1463       platforms.
1464
1465          • Units: seconds
1466
1467          • Default: platform dependent
1468
1469          • Minimum: 1.000
1470
1471          • Maximum: 100.000
1472
1473          • Flags: experimental
1474
1475       The number of seconds between TCP keep-alive probes. Ignored  for  Unix
1476       domain sockets.
1477
1478   tcp_keepalive_probes
1479       NB:  This  parameter depends on a feature which is not available on all
1480       platforms.
1481
1482          • Units: probes
1483
1484          • Default: platform dependent
1485
1486          • Minimum: 1
1487
1488          • Maximum: 100
1489
1490          • Flags: experimental
1491
1492       The maximum number of TCP keep-alive probes to send  before  giving  up
1493       and  killing  the  connection if no response is obtained from the other
1494       end. Ignored for Unix domain sockets.
1495
1496   tcp_keepalive_time
1497       NB: This parameter depends on a feature which is not available  on  all
1498       platforms.
1499
1500          • Units: seconds
1501
1502          • Default: platform dependent
1503
1504          • Minimum: 1.000
1505
1506          • Maximum: 7200.000
1507
1508          • Flags: experimental
1509
1510       The  number  of seconds a connection needs to be idle before TCP begins
1511       sending out keep-alive probes. Ignored for Unix domain sockets.
1512
1513   thread_pool_add_delay
1514          • Units: seconds
1515
1516          • Default: 0.000
1517
1518          • Minimum: 0.000
1519
1520          • Flags: experimental
1521
1522       Wait at least this long after creating a thread.
1523
1524       Some (buggy) systems may need a short (sub-second) delay between creat‐
1525       ing   threads.   Set  this  to  a  few  milliseconds  if  you  see  the
1526       'threads_failed' counter grow too much.
1527
1528       Setting this too high results in insufficient worker threads.
1529
1530   thread_pool_destroy_delay
1531          • Units: seconds
1532
1533          • Default: 1.000
1534
1535          • Minimum: 0.010
1536
1537          • Flags: delayed, experimental
1538
1539       Wait this long after destroying a thread.
1540
1541       This controls the decay of thread pools when idle(-ish).
1542
1543   thread_pool_fail_delay
1544          • Units: seconds
1545
1546          • Default: 0.200
1547
1548          • Minimum: 0.010
1549
1550          • Flags: experimental
1551
1552       Wait at least this long after a failed thread creation before trying to
1553       create another thread.
1554
1555       Failure  to  create  a  worker  thread is often a sign that  the end is
1556       near, because the process is running out of some resource.  This  delay
1557       tries to not rush the end on needlessly.
1558
1559       If  thread  creation failures are a problem, check that thread_pool_max
1560       is not too high.
1561
1562       It may also help to increase thread_pool_timeout  and  thread_pool_min,
1563       to reduce the rate at which treads are destroyed and later recreated.
1564
1565   thread_pool_max
1566          • Units: threads
1567
1568          • Default: 5000
1569
1570          • Minimum: thread_pool_min
1571
1572          • Flags: delayed
1573
1574       The maximum number of worker threads in each pool.
1575
1576       Do  not  set  this higher than you have to, since excess worker threads
1577       soak up RAM and CPU and generally just get in the way of  getting  work
1578       done.
1579
1580   thread_pool_min
1581          • Units: threads
1582
1583          • Default: 100
1584
1585          • Minimum: 5
1586
1587          • Maximum: thread_pool_max
1588
1589          • Flags: delayed
1590
1591       The minimum number of worker threads in each pool.
1592
1593       Increasing  this  may  help  ramp up faster from low load situations or
1594       when threads have expired.
1595
1596       Technical minimum is 5 threads, but this parameter is  strongly  recom‐
1597       mended to be at least 10
1598
1599   thread_pool_reserve
1600          • Units: threads
1601
1602          • Default: 0 (auto-tune: 5% of thread_pool_min)
1603
1604          • Maximum: 95% of thread_pool_min
1605
1606          • Flags: delayed
1607
1608       The number of worker threads reserved for vital tasks in each pool.
1609
1610       Tasks may require other tasks to complete (for example, client requests
1611       may require backend requests, http2 sessions require streams, which re‐
1612       quire requests). This reserve is to ensure that lower priority tasks do
1613       not prevent higher priority tasks from running even under high load.
1614
1615       The effective value is at least 5  (the  number  of  internal  priority
1616       classes), irrespective of this parameter.
1617
1618   thread_pool_stack
1619          • Units: bytes
1620
1621          • Default: 80k
1622
1623          • Minimum: sysconf(_SC_THREAD_STACK_MIN)
1624
1625          • Flags: delayed
1626
1627       Worker thread stack size.  This will likely be rounded up to a multiple
1628       of 4k (or whatever the page_size might be) by the kernel.
1629
1630       The required stack size  is  primarily  driven  by  the  depth  of  the
1631       call-tree. The most common relevant determining factors in varnish core
1632       code are GZIP (un)compression, ESI processing  and  regular  expression
1633       matches.  VMODs  may  also  require  significant  amounts of additional
1634       stack. The nesting depth of VCL subs is another factor, although  typi‐
1635       cally not predominant.
1636
1637       The  stack size is per thread, so the maximum total memory required for
1638       worker thread  stacks  is  in  the  order  of  size  =  thread_pools  x
1639       thread_pool_max x thread_pool_stack.
1640
1641       Thus,  in  particular  for  setups with many threads, keeping the stack
1642       size at a minimum helps reduce the amount of memory  required  by  Var‐
1643       nish.
1644
1645       On  the  other  hand,  thread_pool_stack must be large enough under all
1646       circumstances, otherwise varnish will crash due to  a  stack  overflow.
1647       Usually, a stack overflow manifests itself as a segmentation fault (aka
1648       segfault / SIGSEGV) with the faulting  address  being  near  the  stack
1649       pointer (sp).
1650
1651       Unless  stack usage can be reduced, thread_pool_stack must be increased
1652       when a stack overflow occurs. Setting it  in  150%-200%  increments  is
1653       recommended until stack overflows cease to occur.
1654
1655   thread_pool_timeout
1656          • Units: seconds
1657
1658          • Default: 300.000
1659
1660          • Minimum: 10.000
1661
1662          • Flags: delayed, experimental
1663
1664       Thread idle threshold.
1665
1666       Threads in excess of thread_pool_min, which have been idle for at least
1667       this long, will be destroyed.
1668
1669   thread_pool_watchdog
1670          • Units: seconds
1671
1672          • Default: 60.000
1673
1674          • Minimum: 0.100
1675
1676          • Flags: experimental
1677
1678       Thread queue stuck watchdog.
1679
1680       If no queued work have been released for this long, the worker  process
1681       panics itself.
1682
1683   thread_pools
1684          • Units: pools
1685
1686          • Default: 2
1687
1688          • Minimum: 1
1689
1690          • Maximum: 32
1691
1692          • Flags: delayed, experimental
1693
1694       Number of worker thread pools.
1695
1696       Increasing  the  number of worker pools decreases lock contention. Each
1697       worker pool also has a thread accepting new connections,  so  for  very
1698       high  rates of incoming new connections on systems with many cores, in‐
1699       creasing the worker pools may be required.
1700
1701       Too many pools waste CPU and RAM resources, and more than one pool  for
1702       each CPU is most likely detrimental to performance.
1703
1704       Can  be  increased  on the fly, but decreases require a restart to take
1705       effect, unless the drop_pools experimental debug flag is set.
1706
1707   thread_queue_limit
1708          • Units: requests
1709
1710          • Default: 20
1711
1712          • Minimum: 0
1713
1714          • Flags: experimental
1715
1716       Permitted request queue length per thread-pool.
1717
1718       This sets the number of requests we will queue, waiting for  an  avail‐
1719       able  thread.   Above  this  limit  sessions will be dropped instead of
1720       queued.
1721
1722   thread_stats_rate
1723          • Units: requests
1724
1725          • Default: 10
1726
1727          • Minimum: 0
1728
1729          • Flags: experimental
1730
1731       Worker threads accumulate statistics, and dump these  into  the  global
1732       stats  counters  if  the  lock  is  free  when  they  finish a job (re‐
1733       quest/fetch etc.)  This parameters defines the maximum number of jobs a
1734       worker  thread  may handle, before it is forced to dump its accumulated
1735       stats into the global counters.
1736
1737   timeout_idle
1738          • Units: seconds
1739
1740          • Default: 5.000
1741
1742          • Minimum: 0.000
1743
1744       Idle timeout for client connections.
1745
1746       A connection is considered idle until we have received the full request
1747       headers.
1748
1749       This  parameter  is  particularly relevant for HTTP1 keepalive  connec‐
1750       tions which are closed unless the next request is received before  this
1751       timeout is reached.
1752
1753   timeout_linger
1754          • Units: seconds
1755
1756          • Default: 0.050
1757
1758          • Minimum: 0.000
1759
1760          • Flags: experimental
1761
1762       How long the worker thread lingers on an idle session before handing it
1763       over to the waiter.  When sessions are reused, as much as half  of  all
1764       reuses  happen  within  the first 100 msec of the previous request com‐
1765       pleting.  Setting this too high results in  worker  threads  not  doing
1766       anything  for  their keep, setting it too low just means that more ses‐
1767       sions take a detour around the waiter.
1768
1769   vary_notice
1770          • Units: variants
1771
1772          • Default: 10
1773
1774          • Minimum: 1
1775
1776       How many variants need to be evaluated to log a Notice that there might
1777       be too many variants.
1778
1779   vcc_allow_inline_c
1780          • Units: bool
1781
1782          • Default: off
1783
1784       Allow inline C code in VCL.
1785
1786   vcc_err_unref
1787          • Units: bool
1788
1789          • Default: on
1790
1791       Unreferenced VCL objects result in error.
1792
1793   vcc_unsafe_path
1794          • Units: bool
1795
1796          • Default: on
1797
1798       Allow '/' in vmod & include paths.  Allow 'import ... from ...'.
1799
1800   vcl_cooldown
1801          • Units: seconds
1802
1803          • Default: 600.000
1804
1805          • Minimum: 1.000
1806
1807       How  long  a  VCL  is  kept warm after being replaced as the active VCL
1808       (granularity approximately 30 seconds).
1809
1810   vcl_path
1811          • Default: /opt/varnish/etc/varnish:/opt/varnish/share/varnish/vcl
1812
1813       Directory (or colon separated list of directories) from which  relative
1814       VCL  filenames (vcl.load and include) are to be found.  By default Var‐
1815       nish searches VCL files in both the  system  configuration  and  shared
1816       data  directories  to allow packages to drop their VCL files in a stan‐
1817       dard location where relative includes would work.
1818
1819   vmod_path
1820          • Default: /opt/varnish/lib/varnish/vmods
1821
1822       Directory (or colon separated list of directories) where VMODs  are  to
1823       be found.
1824
1825   vsl_buffer
1826          • Units: bytes
1827
1828          • Default: 16k
1829
1830          • Minimum: vsl_reclen + 12 bytes
1831
1832       Bytes  of  (req-/backend-)workspace dedicated to buffering VSL records.
1833       When this parameter  is  adjusted,  most  likely  workspace_client  and
1834       workspace_backend will have to be adjusted by the same amount.
1835
1836       Setting  this too high costs memory, setting it too low will cause more
1837       VSL flushes and likely increase lock-contention on the VSL mutex.
1838
1839   vsl_mask
1840          • Default:           -Debug,-ObjProtocol,-ObjStatus,-ObjReason,-Obj‐
1841            Header,-VCL_trace,-ExpKill,-WorkThread,-Hash,-VfpAcct,-H2Rx‐
1842            Hdr,-H2RxBody,-H2TxHdr,-H2TxBody,-VdpAcct
1843
1844       Mask individual VSL messages from being logged.
1845
1846          default
1847                 Set default value
1848
1849       Use +/- prefix in front of VSL tag name to unmask/mask  individual  VSL
1850       messages.
1851
1852   vsl_reclen
1853          • Units: bytes
1854
1855          • Default: 255b
1856
1857          • Minimum: 16b
1858
1859          • Maximum: vsl_buffer - 12 bytes
1860
1861       Maximum number of bytes in SHM log record.
1862
1863   vsl_space
1864          • Units: bytes
1865
1866          • Default: 80M
1867
1868          • Minimum: 1M
1869
1870          • Maximum: 4G
1871
1872          • Flags: must_restart
1873
1874       The amount of space to allocate for the VSL fifo buffer in the VSM mem‐
1875       ory segment.  If you make this too small,  varnish{ncsa|log}  etc  will
1876       not  be  able  to  keep  up.  Making it too large just costs memory re‐
1877       sources.
1878
1879   vsm_free_cooldown
1880          • Units: seconds
1881
1882          • Default: 60.000
1883
1884          • Minimum: 10.000
1885
1886          • Maximum: 600.000
1887
1888       How long VSM memory is kept warm after a deallocation (granularity  ap‐
1889       proximately 2 seconds).
1890
1891   vsm_space
1892          • Units: bytes
1893
1894          • Default: 1M
1895
1896          • Minimum: 1M
1897
1898          • Maximum: 1G
1899
1900       DEPRECATED:  This  parameter  is  ignored.  There is no global limit on
1901       amount of shared memory now.
1902
1903   workspace_backend
1904          • Units: bytes
1905
1906          • Default: 96k
1907
1908          • Minimum: 1k
1909
1910          • Flags: delayed
1911
1912       Bytes of HTTP protocol workspace for backend HTTP req/resp.  If  larger
1913       than 4k, use a multiple of 4k for VM efficiency.
1914
1915   workspace_client
1916          • Units: bytes
1917
1918          • Default: 96k
1919
1920          • Minimum: 9k
1921
1922          • Flags: delayed
1923
1924       Bytes of HTTP protocol workspace for clients HTTP req/resp.  Use a mul‐
1925       tiple of 4k for VM efficiency.  For HTTP/2 compliance this must  be  at
1926       least  20k, in order to receive fullsize (=16k) frames from the client.
1927       That usually happens only in POST/PUT bodies.  For  other  traffic-pat‐
1928       terns smaller values work just fine.
1929
1930   workspace_session
1931          • Units: bytes
1932
1933          • Default: 0.75k
1934
1935          • Minimum: 384b
1936
1937          • Flags: delayed
1938
1939       Allocation  size  for session structure and workspace.    The workspace
1940       is primarily used for TCP connection addresses.  If larger than 4k, use
1941       a multiple of 4k for VM efficiency.
1942
1943   workspace_thread
1944          • Units: bytes
1945
1946          • Default: 2k
1947
1948          • Minimum: 0.25k
1949
1950          • Maximum: 8k
1951
1952          • Flags: delayed
1953
1954       Bytes  of  auxiliary  workspace per thread.  This workspace is used for
1955       certain temporary data structures during  the  operation  of  a  worker
1956       thread.   One  use  is for the IO-vectors used during delivery. Setting
1957       this parameter too low may increase the number  of  writev()  syscalls,
1958       setting   it  too  high  just  wastes  space.   ~0.1k  +  UIO_MAXIOV  *
1959       sizeof(struct iovec) (typically = ~16k for  64bit)  is  considered  the
1960       maximum  sensible value under any known circumstances (excluding exotic
1961       vmod use).
1962

EXIT CODES

1964       Varnish and bundled tools will, in most cases, exit  with  one  of  the
1965       following codes
1966
19670 OK
1968
19691 Some error which could be system-dependent and/or transient
1970
19712  Serious  configuration  / parameter error - retrying with the same
1972         configuration / parameters is most likely useless
1973
1974       The varnishd master process may also OR its exit code
1975
1976       • with 0x20 when the varnishd child process died,
1977
1978       • with 0x40 when the varnishd child process was terminated by a  signal
1979         and
1980
1981       • with 0x80 when a core was dumped.
1982

SEE ALSO

1984varnishlog(1)
1985
1986varnishhist(1)
1987
1988varnishncsa(1)
1989
1990varnishstat(1)
1991
1992varnishtop(1)
1993
1994varnish-cli(7)
1995
1996vcl(7)
1997

HISTORY

1999       The  varnishd  daemon was developed by Poul-Henning Kamp in cooperation
2000       with Verdens Gang AS and Varnish Software.
2001
2002       This manual page was written by Dag-Erling  Smørgrav  with  updates  by
2003       Stig Sandbeck Mathisen <ssm@debian.org>, Nils Goroll and others.
2004
2006       This document is licensed under the same licence as Varnish itself. See
2007       LICENCE for details.
2008
2009       • Copyright (c) 2007-2015 Varnish Software AS
2010
2011
2012
2013
2014                                                                   VARNISHD(1)
Impressum