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

NAME

6       varnishd - HTTP accelerator daemon
7

SYNOPSIS

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

RUN TIME PARAMETERS

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

EXIT CODES

1877       Varnish  and  bundled  tools  will, in most cases, exit with one of the
1878       following codes
1879
1880       · 0 OK
1881
1882       · 1 Some error which could be system-dependent and/or transient
1883
1884       · 2 Serious configuration / parameter error - retrying  with  the  same
1885         configuration / parameters is most likely useless
1886
1887       The varnishd master process may also OR its exit code
1888
1889       · with 0x20 when the varnishd child process died,
1890
1891       · with  0x40 when the varnishd child process was terminated by a signal
1892         and
1893
1894       · with 0x80 when a core was dumped.
1895

SEE ALSO

1897       · varnishlog(1)
1898
1899       · varnishhist(1)
1900
1901       · varnishncsa(1)
1902
1903       · varnishstat(1)
1904
1905       · varnishtop(1)
1906
1907       · varnish-cli(7)
1908
1909       · vcl(7)
1910

HISTORY

1912       The varnishd daemon was developed by Poul-Henning Kamp  in  cooperation
1913       with Verdens Gang AS and Varnish Software.
1914
1915       This  manual  page  was  written by Dag-Erling Smørgrav with updates by
1916       Stig Sandbeck Mathisen <ssm@debian.org>, Nils Goroll and others.
1917
1919       This document is licensed under the same licence as Varnish itself. See
1920       LICENCE for details.
1921
1922       · Copyright (c) 2007-2015 Varnish Software AS
1923
1924
1925
1926
1927                                                                   VARNISHD(1)
Impressum