1VARNISHD(1) VARNISHD(1)
2
3
4
6 varnishd - HTTP accelerator daemon
7
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
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
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
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
411 • experimental
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
417 • delayed
418
419 This parameter can be changed on the fly, but will not take effect
420 immediately.
421
422 • restart
423
424 The worker process must be stopped and restarted, before this parame‐
425 ter takes effect.
426
427 • reload
428
429 The VCL programs must be reloaded for this parameter to take effect.
430
431 • wizard
432
433 Do not touch unless you really know what you're doing.
434
435 • only_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
1964 Varnish and bundled tools will, in most cases, exit with one of the
1965 following codes
1966
1967 • 0 OK
1968
1969 • 1 Some error which could be system-dependent and/or transient
1970
1971 • 2 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
1984 • varnishlog(1)
1985
1986 • varnishhist(1)
1987
1988 • varnishncsa(1)
1989
1990 • varnishstat(1)
1991
1992 • varnishtop(1)
1993
1994 • varnish-cli(7)
1995
1996 • vcl(7)
1997
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)