Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
U
unique-xids
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
uplex-varnish
unique-xids
Commits
6def8cf5
Commit
6def8cf5
authored
Jan 08, 2013
by
Poul-Henning Kamp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Move the main table of parameters to its own source code before
starting surgery on parameter defaults.
parent
0e9627dd
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
626 additions
and
569 deletions
+626
-569
Makefile.am
bin/varnishd/Makefile.am
+1
-0
mgt_param.c
bin/varnishd/mgt/mgt_param.c
+11
-569
mgt_param.h
bin/varnishd/mgt/mgt_param.h
+23
-0
mgt_param_tbl.c
bin/varnishd/mgt/mgt_param_tbl.c
+591
-0
No files found.
bin/varnishd/Makefile.am
View file @
6def8cf5
...
...
@@ -61,6 +61,7 @@ varnishd_SOURCES = \
mgt/mgt_cli.c
\
mgt/mgt_main.c
\
mgt/mgt_param.c
\
mgt/mgt_param_tbl.c
\
mgt/mgt_param_bits.c
\
mgt/mgt_pool.c
\
mgt/mgt_sandbox.c
\
...
...
bin/varnishd/mgt/mgt_param.c
View file @
6def8cf5
...
...
@@ -53,7 +53,6 @@
#include "mgt_cli.h"
#define MAGIC_INIT_STRING "\001"
struct
params
mgt_param
;
static
int
nparspec
;
static
struct
parspec
const
**
parspecs
;
...
...
@@ -93,7 +92,7 @@ tweak_generic_timeout(struct cli *cli, volatile unsigned *dst, const char *arg)
/*--------------------------------------------------------------------*/
static
void
void
tweak_timeout
(
struct
cli
*
cli
,
const
struct
parspec
*
par
,
const
char
*
arg
)
{
volatile
unsigned
*
dest
;
...
...
@@ -149,7 +148,7 @@ tweak_timeout_double(struct cli *cli, const struct parspec *par,
/*--------------------------------------------------------------------*/
static
void
void
tweak_generic_double
(
struct
cli
*
cli
,
const
struct
parspec
*
par
,
const
char
*
arg
)
{
...
...
@@ -219,7 +218,7 @@ tweak_generic_bool(struct cli *cli, volatile unsigned *dest, const char *arg)
/*--------------------------------------------------------------------*/
static
void
void
tweak_bool
(
struct
cli
*
cli
,
const
struct
parspec
*
par
,
const
char
*
arg
)
{
volatile
unsigned
*
dest
;
...
...
@@ -363,7 +362,7 @@ tweak_bytes(struct cli *cli, const struct parspec *par, const char *arg)
/*--------------------------------------------------------------------*/
static
void
void
tweak_bytes_u
(
struct
cli
*
cli
,
const
struct
parspec
*
par
,
const
char
*
arg
)
{
volatile
unsigned
*
d1
;
...
...
@@ -385,7 +384,7 @@ tweak_bytes_u(struct cli *cli, const struct parspec *par, const char *arg)
* XXX: The magic init string is a hack for this.
*/
static
void
void
tweak_user
(
struct
cli
*
cli
,
const
struct
parspec
*
par
,
const
char
*
arg
)
{
struct
passwd
*
pw
;
...
...
@@ -426,7 +425,7 @@ tweak_user(struct cli *cli, const struct parspec *par, const char *arg)
* XXX: see comment for tweak_user, same thing here.
*/
static
void
void
tweak_group
(
struct
cli
*
cli
,
const
struct
parspec
*
par
,
const
char
*
arg
)
{
struct
group
*
gr
;
...
...
@@ -473,7 +472,7 @@ clean_listen_sock_head(struct listen_sock_head *lsh)
}
}
static
void
void
tweak_listen_address
(
struct
cli
*
cli
,
const
struct
parspec
*
par
,
const
char
*
arg
)
{
...
...
@@ -551,7 +550,7 @@ tweak_listen_address(struct cli *cli, const struct parspec *par,
/*--------------------------------------------------------------------*/
static
void
void
tweak_string
(
struct
cli
*
cli
,
const
struct
parspec
*
par
,
const
char
*
arg
)
{
char
**
p
=
TRUST_ME
(
par
->
priv
);
...
...
@@ -567,7 +566,7 @@ tweak_string(struct cli *cli, const struct parspec *par, const char *arg)
/*--------------------------------------------------------------------*/
static
void
void
tweak_waiter
(
struct
cli
*
cli
,
const
struct
parspec
*
par
,
const
char
*
arg
)
{
...
...
@@ -578,7 +577,7 @@ tweak_waiter(struct cli *cli, const struct parspec *par, const char *arg)
/*--------------------------------------------------------------------*/
static
void
void
tweak_poolparam
(
struct
cli
*
cli
,
const
struct
parspec
*
par
,
const
char
*
arg
)
{
volatile
struct
poolparam
*
pp
,
px
;
...
...
@@ -655,563 +654,6 @@ tweak_poolparam(struct cli *cli, const struct parspec *par, const char *arg)
#define PROTECTED_TEXT \
"\nNB: This parameter is protected and can not be changed."
#define MEMPOOL_TEXT \
"The three numbers are:\n" \
" min_pool -- minimum size of free pool.\n" \
" max_pool -- maximum size of free pool.\n" \
" max_age -- max age of free element.\n"
/*
* Remember to update varnishd.1 whenever you add / remove a parameter or
* change its default value.
* XXX: we should generate the relevant section of varnishd.1 from here.
*/
static
const
struct
parspec
input_parspec
[]
=
{
{
"user"
,
tweak_user
,
NULL
,
0
,
0
,
"The unprivileged user to run as. Setting this will "
"also set
\"
group
\"
to the specified user's primary group."
,
MUST_RESTART
,
MAGIC_INIT_STRING
},
{
"group"
,
tweak_group
,
NULL
,
0
,
0
,
"The unprivileged group to run as."
,
MUST_RESTART
,
MAGIC_INIT_STRING
},
{
"default_ttl"
,
tweak_timeout_double
,
&
mgt_param
.
default_ttl
,
0
,
UINT_MAX
,
"The TTL assigned to objects if neither the backend nor "
"the VCL code assigns one.
\n
"
"Objects already cached will not be affected by changes "
"made until they are fetched from the backend again.
\n
"
"To force an immediate effect at the expense of a total "
"flush of the cache use
\"
ban obj.http.date ~ .
\"
"
,
0
,
"120"
,
"seconds"
},
{
"workspace_client"
,
tweak_bytes_u
,
&
mgt_param
.
workspace_client
,
3072
,
UINT_MAX
,
"Bytes of HTTP protocol workspace for clients HTTP req/resp."
" If larger than 4k, use a multiple of 4k for VM efficiency."
,
DELAYED_EFFECT
,
"64k"
,
"bytes"
},
{
"workspace_backend"
,
tweak_bytes_u
,
&
mgt_param
.
workspace_backend
,
1024
,
UINT_MAX
,
"Bytes of HTTP protocol workspace for backend HTTP req/resp."
" If larger than 4k, use a multiple of 4k for VM efficiency."
,
DELAYED_EFFECT
,
"64k"
,
"bytes"
},
{
"workspace_thread"
,
tweak_bytes_u
,
&
mgt_param
.
workspace_thread
,
256
,
8192
,
"Bytes of auxillary workspace per thread.
\n
"
"This workspace is used for certain temporary data structures"
" during the operation of a worker thread.
\n
"
"One use is for the io-vectors for writing requests and"
" responses to sockets, having too little space will"
" result in more writev(2) system calls, having too much"
" just wastes the space.
\n
"
,
DELAYED_EFFECT
,
"2048"
,
"bytes"
},
{
"http_req_hdr_len"
,
tweak_bytes_u
,
&
mgt_param
.
http_req_hdr_len
,
40
,
UINT_MAX
,
"Maximum length of any HTTP client request header we will "
"allow. The limit is inclusive its continuation lines.
\n
"
,
0
,
"8k"
,
"bytes"
},
{
"http_req_size"
,
tweak_bytes_u
,
&
mgt_param
.
http_req_size
,
256
,
UINT_MAX
,
"Maximum number of bytes of HTTP client request we will deal "
"with. This is a limit on all bytes up to the double blank "
"line which ends the HTTP request.
\n
"
"The memory for the request is allocated from the client "
"workspace (param: workspace_client) and this parameter limits "
"how much of that the request is allowed to take up."
,
0
,
"32k"
,
"bytes"
},
{
"http_resp_hdr_len"
,
tweak_bytes_u
,
&
mgt_param
.
http_resp_hdr_len
,
40
,
UINT_MAX
,
"Maximum length of any HTTP backend response header we will "
"allow. The limit is inclusive its continuation lines.
\n
"
,
0
,
"8k"
,
"bytes"
},
{
"http_resp_size"
,
tweak_bytes_u
,
&
mgt_param
.
http_resp_size
,
256
,
UINT_MAX
,
"Maximum number of bytes of HTTP backend resonse we will deal "
"with. This is a limit on all bytes up to the double blank "
"line which ends the HTTP request.
\n
"
"The memory for the request is allocated from the worker "
"workspace (param: thread_pool_workspace) and this parameter "
"limits how much of that the request is allowed to take up."
,
0
,
"32k"
,
"bytes"
},
{
"http_max_hdr"
,
tweak_uint
,
&
mgt_param
.
http_max_hdr
,
32
,
65535
,
"Maximum number of HTTP headers we will deal with in "
"client request or backend reponses. "
"Note that the first line occupies five header fields.
\n
"
"This parameter does not influence storage consumption, "
"objects allocate exact space for the headers they store.
\n
"
,
0
,
"64"
,
"header lines"
},
{
"vsl_buffer"
,
tweak_bytes_u
,
&
mgt_param
.
vsl_buffer
,
1024
,
UINT_MAX
,
"Bytes of (req-/backend-)workspace dedicated to buffering"
" VSL records.
\n
"
"At a bare minimum, this must be longer than"
" the longest HTTP header to be logged.
\n
"
"Setting this too high costs memory, setting it too low"
" will cause more VSL flushes and likely increase"
" lock-contention on the VSL mutex.
\n
"
"Minimum is 1k bytes."
,
0
,
"4k"
,
"bytes"
},
{
"shm_reclen"
,
tweak_bytes_u
,
&
mgt_param
.
shm_reclen
,
16
,
65535
,
"Maximum number of bytes in SHM log record.
\n
"
"Maximum is 65535 bytes."
,
0
,
"255"
,
"bytes"
},
{
"default_grace"
,
tweak_timeout_double
,
&
mgt_param
.
default_grace
,
0
,
UINT_MAX
,
"Default grace period. We will deliver an object "
"this long after it has expired, provided another thread "
"is attempting to get a new copy.
\n
"
"Objects already cached will not be affected by changes "
"made until they are fetched from the backend again.
\n
"
,
DELAYED_EFFECT
,
"10"
,
"seconds"
},
{
"default_keep"
,
tweak_timeout_double
,
&
mgt_param
.
default_keep
,
0
,
UINT_MAX
,
"Default keep period. We will keep a useless object "
"around this long, making it available for conditional "
"backend fetches. "
"That means that the object will be removed from the "
"cache at the end of ttl+grace+keep."
,
DELAYED_EFFECT
,
"0"
,
"seconds"
},
{
"timeout_idle"
,
tweak_timeout_double
,
&
mgt_param
.
timeout_idle
,
0
,
UINT_MAX
,
"Idle timeout for client connections.
\n
"
"A connection is considered idle, until we receive"
" a non-white-space character on it."
,
0
,
"5"
,
"seconds"
},
{
"timeout_req"
,
tweak_timeout_double
,
&
mgt_param
.
timeout_req
,
0
,
UINT_MAX
,
"Max time to receive clients request header, measured"
" from first non-white-space character to double CRNL."
,
0
,
"2"
,
"seconds"
},
{
"expiry_sleep"
,
tweak_timeout_double
,
&
mgt_param
.
expiry_sleep
,
0
,
60
,
"How long the expiry thread sleeps when there is nothing "
"for it to do.
\n
"
,
0
,
"1"
,
"seconds"
},
{
"pipe_timeout"
,
tweak_timeout
,
&
mgt_param
.
pipe_timeout
,
0
,
0
,
"Idle timeout for PIPE sessions. "
"If nothing have been received in either direction for "
"this many seconds, the session is closed.
\n
"
,
0
,
"60"
,
"seconds"
},
{
"send_timeout"
,
tweak_timeout
,
&
mgt_param
.
send_timeout
,
0
,
0
,
"Send timeout for client connections. "
"If the HTTP response hasn't been transmitted in this many
\n
"
"seconds the session is closed.
\n
"
"See setsockopt(2) under SO_SNDTIMEO for more information."
,
DELAYED_EFFECT
,
"600"
,
"seconds"
},
{
"idle_send_timeout"
,
tweak_timeout
,
&
mgt_param
.
idle_send_timeout
,
0
,
0
,
"Time to wait with no data sent. "
"If no data has been transmitted in this many
\n
"
"seconds the session is closed.
\n
"
"See setsockopt(2) under SO_SNDTIMEO for more information."
,
DELAYED_EFFECT
,
"60"
,
"seconds"
},
{
"auto_restart"
,
tweak_bool
,
&
mgt_param
.
auto_restart
,
0
,
0
,
"Restart child process automatically if it dies.
\n
"
,
0
,
"on"
,
"bool"
},
{
"nuke_limit"
,
tweak_uint
,
&
mgt_param
.
nuke_limit
,
0
,
UINT_MAX
,
"Maximum number of objects we attempt to nuke in order"
"to make space for a object body."
,
EXPERIMENTAL
,
"50"
,
"allocations"
},
{
"fetch_chunksize"
,
tweak_bytes
,
&
mgt_param
.
fetch_chunksize
,
4
*
1024
,
UINT_MAX
,
"The default chunksize used by fetcher. "
"This should be bigger than the majority of objects with "
"short TTLs.
\n
"
"Internal limits in the storage_file module makes increases "
"above 128kb a dubious idea."
,
EXPERIMENTAL
,
"128k"
,
"bytes"
},
{
"fetch_maxchunksize"
,
tweak_bytes
,
&
mgt_param
.
fetch_maxchunksize
,
64
*
1024
,
UINT_MAX
,
"The maximum chunksize we attempt to allocate from storage. "
"Making this too large may cause delays and storage "
"fragmentation.
\n
"
,
EXPERIMENTAL
,
"256m"
,
"bytes"
},
{
"accept_filter"
,
tweak_bool
,
&
mgt_param
.
accept_filter
,
0
,
0
,
"Enable kernel accept-filters, if supported by the kernel."
,
MUST_RESTART
,
"on"
,
"bool"
},
{
"listen_address"
,
tweak_listen_address
,
NULL
,
0
,
0
,
"Whitespace separated list of network endpoints where "
"Varnish will accept requests.
\n
"
"Possible formats: host, host:port, :port"
,
MUST_RESTART
,
":80"
},
{
"listen_depth"
,
tweak_uint
,
&
mgt_param
.
listen_depth
,
0
,
UINT_MAX
,
"Listen queue depth."
,
MUST_RESTART
,
"1024"
,
"connections"
},
{
"cli_buffer"
,
tweak_bytes_u
,
&
mgt_param
.
cli_buffer
,
4096
,
UINT_MAX
,
"Size of buffer for CLI command input."
"
\n
You may need to increase this if you have big VCL files "
"and use the vcl.inline CLI command.
\n
"
"NB: Must be specified with -p to have effect.
\n
"
,
0
,
"8k"
,
"bytes"
},
{
"cli_limit"
,
tweak_bytes_u
,
&
mgt_param
.
cli_limit
,
128
,
99999999
,
"Maximum size of CLI response. If the response exceeds"
" this limit, the reponse code will be 201 instead of"
" 200 and the last line will indicate the truncation."
,
0
,
"48k"
,
"bytes"
},
{
"cli_timeout"
,
tweak_timeout
,
&
mgt_param
.
cli_timeout
,
0
,
0
,
"Timeout for the childs replies to CLI requests from "
"the mgt_param."
,
0
,
"10"
,
"seconds"
},
{
"ping_interval"
,
tweak_uint
,
&
mgt_param
.
ping_interval
,
0
,
UINT_MAX
,
"Interval between pings from parent to child.
\n
"
"Zero will disable pinging entirely, which makes "
"it possible to attach a debugger to the child."
,
MUST_RESTART
,
"3"
,
"seconds"
},
{
"lru_interval"
,
tweak_timeout
,
&
mgt_param
.
lru_timeout
,
0
,
0
,
"Grace period before object moves on LRU list.
\n
"
"Objects are only moved to the front of the LRU "
"list if they have not been moved there already inside "
"this timeout period. This reduces the amount of lock "
"operations necessary for LRU list access."
,
EXPERIMENTAL
,
"2"
,
"seconds"
},
{
"cc_command"
,
tweak_string
,
&
mgt_cc_cmd
,
0
,
0
,
"Command used for compiling the C source code to a "
"dlopen(3) loadable object. Any occurrence of %s in "
"the string will be replaced with the source file name, "
"and %o will be replaced with the output file name."
,
MUST_RELOAD
,
VCC_CC
,
NULL
},
{
"max_restarts"
,
tweak_uint
,
&
mgt_param
.
max_restarts
,
0
,
UINT_MAX
,
"Upper limit on how many times a request can restart."
"
\n
Be aware that restarts are likely to cause a hit against "
"the backend, so don't increase thoughtlessly.
\n
"
,
0
,
"4"
,
"restarts"
},
{
"esi_syntax"
,
tweak_uint
,
&
mgt_param
.
esi_syntax
,
0
,
UINT_MAX
,
"Bitmap controlling ESI parsing code:
\n
"
" 0x00000001 - Don't check if it looks like XML
\n
"
" 0x00000002 - Ignore non-esi elements
\n
"
" 0x00000004 - Emit parsing debug records
\n
"
" 0x00000008 - Force-split parser input (debugging)
\n
"
"
\n
"
"Use 0x notation and do the bitor in your head :-)
\n
"
,
0
,
"0"
,
"bitmap"
},
{
"max_esi_depth"
,
tweak_uint
,
&
mgt_param
.
max_esi_depth
,
0
,
UINT_MAX
,
"Maximum depth of esi:include processing.
\n
"
,
0
,
"5"
,
"levels"
},
{
"connect_timeout"
,
tweak_timeout_double
,
&
mgt_param
.
connect_timeout
,
0
,
UINT_MAX
,
"Default connection timeout for backend connections. "
"We only try to connect to the backend for this many "
"seconds before giving up. "
"VCL can override this default value for each backend and "
"backend request."
,
0
,
"0.7"
,
"s"
},
{
"first_byte_timeout"
,
tweak_timeout_double
,
&
mgt_param
.
first_byte_timeout
,
0
,
UINT_MAX
,
"Default timeout for receiving first byte from backend. "
"We only wait for this many seconds for the first "
"byte before giving up. A value of 0 means it will never time "
"out. "
"VCL can override this default value for each backend and "
"backend request. This parameter does not apply to pipe."
,
0
,
"60"
,
"s"
},
{
"between_bytes_timeout"
,
tweak_timeout_double
,
&
mgt_param
.
between_bytes_timeout
,
0
,
UINT_MAX
,
"Default timeout between bytes when receiving data from "
"backend. "
"We only wait for this many seconds between bytes "
"before giving up. A value of 0 means it will never time out. "
"VCL can override this default value for each backend request "
"and backend request. This parameter does not apply to pipe."
,
0
,
"60"
,
"s"
},
{
"acceptor_sleep_max"
,
tweak_timeout_double
,
&
mgt_param
.
acceptor_sleep_max
,
0
,
10
,
"If we run out of resources, such as file descriptors or "
"worker threads, the acceptor will sleep between accepts.
\n
"
"This parameter limits how long it can sleep between "
"attempts to accept new connections."
,
EXPERIMENTAL
,
"0.050"
,
"s"
},
{
"acceptor_sleep_incr"
,
tweak_timeout_double
,
&
mgt_param
.
acceptor_sleep_incr
,
0
,
1
,
"If we run out of resources, such as file descriptors or "
"worker threads, the acceptor will sleep between accepts.
\n
"
"This parameter control how much longer we sleep, each time "
"we fail to accept a new connection."
,
EXPERIMENTAL
,
"0.001"
,
"s"
},
{
"acceptor_sleep_decay"
,
tweak_generic_double
,
&
mgt_param
.
acceptor_sleep_decay
,
0
,
1
,
"If we run out of resources, such as file descriptors or "
"worker threads, the acceptor will sleep between accepts.
\n
"
"This parameter (multiplicatively) reduce the sleep duration "
"for each succesfull accept. (ie: 0.9 = reduce by 10%)"
,
EXPERIMENTAL
,
"0.900"
,
""
},
{
"clock_skew"
,
tweak_uint
,
&
mgt_param
.
clock_skew
,
0
,
UINT_MAX
,
"How much clockskew we are willing to accept between the "
"backend and our own clock."
,
0
,
"10"
,
"s"
},
{
"prefer_ipv6"
,
tweak_bool
,
&
mgt_param
.
prefer_ipv6
,
0
,
0
,
"Prefer IPv6 address when connecting to backends which "
"have both IPv4 and IPv6 addresses."
,
0
,
"off"
,
"bool"
},
{
"session_max"
,
tweak_uint
,
&
mgt_param
.
max_sess
,
1000
,
UINT_MAX
,
"Maximum number of sessions we will allocate from one pool "
"before just dropping connections.
\n
"
"This is mostly an anti-DoS measure, and setting it plenty "
"high should not hurt, as long as you have the memory for "
"it.
\n
"
,
0
,
"100000"
,
"sessions"
},
{
"timeout_linger"
,
tweak_timeout_double
,
&
mgt_param
.
timeout_linger
,
0
,
UINT_MAX
,
"How long time the workerthread lingers on an idle session "
"before handing it over to the waiter.
\n
"
"When sessions are reused, as much as half of all reuses "
"happen within the first 100 msec of the previous request "
"completing.
\n
"
"Setting this too high results in worker threads not doing "
"anything for their keep, setting it too low just means that "
"more sessions take a detour around the waiter."
,
EXPERIMENTAL
,
"0.050"
,
"seconds"
},
{
"log_local_address"
,
tweak_bool
,
&
mgt_param
.
log_local_addr
,
0
,
0
,
"Log the local address on the TCP connection in the "
"SessionOpen VSL record.
\n
"
"Disabling this saves a getsockname(2) system call "
"per TCP connection.
\n
"
,
0
,
"on"
,
"bool"
},
{
"waiter"
,
tweak_waiter
,
NULL
,
0
,
0
,
"Select the waiter kernel interface.
\n
"
,
WIZARD
|
MUST_RESTART
,
WAITER_DEFAULT
,
NULL
},
{
"ban_dups"
,
tweak_bool
,
&
mgt_param
.
ban_dups
,
0
,
0
,
"Detect and eliminate duplicate bans.
\n
"
,
0
,
"on"
,
"bool"
},
{
"syslog_cli_traffic"
,
tweak_bool
,
&
mgt_param
.
syslog_cli_traffic
,
0
,
0
,
"Log all CLI traffic to syslog(LOG_INFO).
\n
"
,
0
,
"on"
,
"bool"
},
{
"ban_lurker_sleep"
,
tweak_timeout_double
,
&
mgt_param
.
ban_lurker_sleep
,
0
,
UINT_MAX
,
"How long time does the ban lurker thread sleeps between "
"successful attempts to push the last item up the ban "
" list. It always sleeps a second when nothing can be done.
\n
"
"A value of zero disables the ban lurker."
,
0
,
"0.01"
,
"s"
},
{
"saintmode_threshold"
,
tweak_uint
,
&
mgt_param
.
saintmode_threshold
,
0
,
UINT_MAX
,
"The maximum number of objects held off by saint mode before "
"no further will be made to the backend until one times out. "
"A value of 0 disables saintmode."
,
EXPERIMENTAL
,
"10"
,
"objects"
},
{
"http_range_support"
,
tweak_bool
,
&
mgt_param
.
http_range_support
,
0
,
0
,
"Enable support for HTTP Range headers.
\n
"
,
0
,
"on"
,
"bool"
},
{
"http_gzip_support"
,
tweak_bool
,
&
mgt_param
.
http_gzip_support
,
0
,
0
,
"Enable gzip support. When enabled Varnish will compress "
"uncompressed objects before they are stored in the cache. "
"If a client does not support gzip encoding Varnish will "
"uncompress compressed objects on demand. Varnish will also "
"rewrite the Accept-Encoding header of clients indicating "
"support for gzip to:
\n
"
" Accept-Encoding: gzip
\n\n
"
"Clients that do not support gzip will have their "
"Accept-Encoding header removed. For more information on how "
"gzip is implemented please see the chapter on gzip in the "
"Varnish reference."
,
EXPERIMENTAL
,
"on"
,
"bool"
},
{
"gzip_level"
,
tweak_uint
,
&
mgt_param
.
gzip_level
,
0
,
9
,
"Gzip compression level: 0=debug, 1=fast, 9=best"
,
0
,
"6"
,
""
},
{
"gzip_memlevel"
,
tweak_uint
,
&
mgt_param
.
gzip_memlevel
,
1
,
9
,
"Gzip memory level 1=slow/least, 9=fast/most compression.
\n
"
"Memory impact is 1=1k, 2=2k, ... 9=256k."
,
0
,
"8"
,
""
},
{
"gzip_buffer"
,
tweak_bytes_u
,
&
mgt_param
.
gzip_buffer
,
2048
,
UINT_MAX
,
"Size of malloc buffer used for gzip processing.
\n
"
"These buffers are used for in-transit data,"
" for instance gunzip'ed data being sent to a client."
"Making this space to small results in more overhead,"
" writes to sockets etc, making it too big is probably"
" just a waste of memory."
,
EXPERIMENTAL
,
"32k"
,
"bytes"
},
{
"shortlived"
,
tweak_timeout_double
,
&
mgt_param
.
shortlived
,
0
,
UINT_MAX
,
"Objects created with TTL shorter than this are always "
"put in transient storage.
\n
"
,
0
,
"10.0"
,
"s"
},
{
"critbit_cooloff"
,
tweak_timeout_double
,
&
mgt_param
.
critbit_cooloff
,
60
,
254
,
"How long time the critbit hasher keeps deleted objheads "
"on the cooloff list.
\n
"
,
WIZARD
,
"180.0"
,
"s"
},
{
"vcl_dir"
,
tweak_string
,
&
mgt_vcl_dir
,
0
,
0
,
"Directory from which relative VCL filenames (vcl.load and "
"include) are opened."
,
0
,
#ifdef VARNISH_VCL_DIR
VARNISH_VCL_DIR
,
#else
"."
,
#endif
NULL
},
{
"vmod_dir"
,
tweak_string
,
&
mgt_vmod_dir
,
0
,
0
,
"Directory where VCL modules are to be found."
,
0
,
#ifdef VARNISH_VMOD_DIR
VARNISH_VMOD_DIR
,
#else
"."
,
#endif
NULL
},
{
"vcc_err_unref"
,
tweak_bool
,
&
mgt_vcc_err_unref
,
0
,
0
,
"Unreferenced VCL objects result in error.
\n
"
,
0
,
"on"
,
"bool"
},
{
"vcc_allow_inline_c"
,
tweak_bool
,
&
mgt_vcc_allow_inline_c
,
0
,
0
,
"Allow inline C code in VCL.
\n
"
,
0
,
"on"
,
"bool"
},
{
"vcc_unsafe_path"
,
tweak_bool
,
&
mgt_vcc_unsafe_path
,
0
,
0
,
"Allow '/' in vmod & include paths.
\n
"
"Allow 'import ... from ...'.
\n
"
,
0
,
"on"
,
"bool"
},
{
"pcre_match_limit"
,
tweak_uint
,
&
mgt_param
.
vre_limits
.
match
,
1
,
UINT_MAX
,
"The limit for the number of internal matching function"
" calls in a pcre_exec() execution."
,
0
,
"10000"
,
""
},
{
"pcre_match_limit_recursion"
,
tweak_uint
,
&
mgt_param
.
vre_limits
.
match_recursion
,
1
,
UINT_MAX
,
"The limit for the number of internal matching function"
" recursions in a pcre_exec() execution."
,
0
,
"10000"
,
""
},
{
"vsl_space"
,
tweak_bytes
,
&
mgt_param
.
vsl_space
,
1024
*
1024
,
0
,
"The amount of space to allocate for the VSL fifo buffer"
" in the VSM memory segment."
" If you make this too small, varnish{ncsa|log} etc will"
" not be able to keep up."
" Making it too large just costs memory resources."
,
MUST_RESTART
,
"80M"
,
"bytes"
},
{
"vsm_space"
,
tweak_bytes
,
&
mgt_param
.
vsm_space
,
1024
*
1024
,
0
,
"The amount of space to allocate for stats counters"
" in the VSM memory segment."
" If you make this too small, some counters will be"
" invisible."
" Making it too large just costs memory resources."
,
MUST_RESTART
,
"1M"
,
"bytes"
},
{
"busyobj_worker_cache"
,
tweak_bool
,
&
mgt_param
.
bo_cache
,
0
,
0
,
"Cache free busyobj per worker thread."
"Disable this if you have very high hitrates and want"
"to save the memory of one busyobj per worker thread."
,
0
,
"false"
,
""
},
{
"pool_vbc"
,
tweak_poolparam
,
&
mgt_param
.
vbc_pool
,
0
,
10000
,
"Parameters for backend connection memory pool.
\n
"
MEMPOOL_TEXT
,
0
,
"10,100,10"
,
""
},
{
"pool_req"
,
tweak_poolparam
,
&
mgt_param
.
req_pool
,
0
,
10000
,
"Parameters for per worker pool request memory pool.
\n
"
MEMPOOL_TEXT
,
0
,
"10,100,10"
,
""
},
{
"pool_sess"
,
tweak_poolparam
,
&
mgt_param
.
sess_pool
,
0
,
10000
,
"Parameters for per worker pool session memory pool.
\n
"
MEMPOOL_TEXT
,
0
,
"10,100,10"
,
""
},
{
"pool_vbo"
,
tweak_poolparam
,
&
mgt_param
.
vbo_pool
,
0
,
10000
,
"Parameters for backend object fetch memory pool.
\n
"
MEMPOOL_TEXT
,
0
,
"10,100,10"
,
""
},
{
"obj_readonly"
,
tweak_bool
,
&
mgt_param
.
obj_readonly
,
0
,
0
,
"If set, we do not update obj.hits and obj.lastuse to"
"avoid dirtying VM pages associated with cached objects."
,
0
,
"false"
,
""
},
{
NULL
,
NULL
,
NULL
}
};
/*--------------------------------------------------------------------*/
#define WIDTH 76
...
...
@@ -1440,7 +882,7 @@ void
MCF_ParamInit
(
struct
cli
*
cli
)
{
MCF_AddParams
(
inpu
t_parspec
);
MCF_AddParams
(
mg
t_parspec
);
MCF_AddParams
(
WRK_parspec
);
MCF_AddParams
(
VSL_parspec
);
...
...
bin/varnishd/mgt/mgt_param.h
View file @
6def8cf5
...
...
@@ -50,6 +50,17 @@ struct parspec {
const
char
*
units
;
};
tweak_t
tweak_user
;
tweak_t
tweak_group
;
tweak_t
tweak_string
;
tweak_t
tweak_bool
;
tweak_t
tweak_waiter
;
tweak_t
tweak_bytes_u
;
tweak_t
tweak_listen_address
;
tweak_t
tweak_timeout
;
tweak_t
tweak_generic_double
;
tweak_t
tweak_poolparam
;
int
tweak_generic_uint
(
struct
cli
*
cli
,
volatile
unsigned
*
dest
,
const
char
*
arg
,
unsigned
min
,
unsigned
max
);
void
tweak_uint
(
struct
cli
*
cli
,
const
struct
parspec
*
par
,
const
char
*
arg
);
...
...
@@ -57,8 +68,20 @@ void tweak_timeout_double(struct cli *cli,
const
struct
parspec
*
par
,
const
char
*
arg
);
void
tweak_bytes
(
struct
cli
*
cli
,
const
struct
parspec
*
par
,
const
char
*
arg
);
/* mgt_param_tbl.c */
extern
const
struct
parspec
mgt_parspec
[];
/* mgt_param_vsl.c */
extern
const
struct
parspec
VSL_parspec
[];
/* mgt_pool.c */
extern
const
struct
parspec
WRK_parspec
[];
#define MAGIC_INIT_STRING "\001"
#define MEMPOOL_TEXT \
"The three numbers are:\n" \
" min_pool -- minimum size of free pool.\n" \
" max_pool -- maximum size of free pool.\n" \
" max_age -- max age of free element.\n"
bin/varnishd/mgt/mgt_param_tbl.c
0 → 100644
View file @
6def8cf5
/*-
* Copyright (c) 2006 Verdens Gang AS
* Copyright (c) 2006-2013 Varnish Software AS
* All rights reserved.
*
* Author: Poul-Henning Kamp <phk@phk.freebsd.dk>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include "config.h"
#include <limits.h>
#include <stdio.h>
#include "mgt/mgt.h"
#include "common/params.h"
#include "mgt/mgt_param.h"
#include "waiter/waiter.h"
/*
* Remember to update varnishd.1 whenever you add / remove a parameter or
* change its default value.
* XXX: we should generate the relevant section of varnishd.1 from here.
*/
const
struct
parspec
mgt_parspec
[]
=
{
{
"user"
,
tweak_user
,
NULL
,
0
,
0
,
"The unprivileged user to run as. Setting this will "
"also set
\"
group
\"
to the specified user's primary group."
,
MUST_RESTART
,
MAGIC_INIT_STRING
},
{
"group"
,
tweak_group
,
NULL
,
0
,
0
,
"The unprivileged group to run as."
,
MUST_RESTART
,
MAGIC_INIT_STRING
},
{
"default_ttl"
,
tweak_timeout_double
,
&
mgt_param
.
default_ttl
,
0
,
UINT_MAX
,
"The TTL assigned to objects if neither the backend nor "
"the VCL code assigns one.
\n
"
"Objects already cached will not be affected by changes "
"made until they are fetched from the backend again.
\n
"
"To force an immediate effect at the expense of a total "
"flush of the cache use
\"
ban obj.http.date ~ .
\"
"
,
0
,
"120"
,
"seconds"
},
{
"workspace_client"
,
tweak_bytes_u
,
&
mgt_param
.
workspace_client
,
3072
,
UINT_MAX
,
"Bytes of HTTP protocol workspace for clients HTTP req/resp."
" If larger than 4k, use a multiple of 4k for VM efficiency."
,
DELAYED_EFFECT
,
"64k"
,
"bytes"
},
{
"workspace_backend"
,
tweak_bytes_u
,
&
mgt_param
.
workspace_backend
,
1024
,
UINT_MAX
,
"Bytes of HTTP protocol workspace for backend HTTP req/resp."
" If larger than 4k, use a multiple of 4k for VM efficiency."
,
DELAYED_EFFECT
,
"64k"
,
"bytes"
},
{
"workspace_thread"
,
tweak_bytes_u
,
&
mgt_param
.
workspace_thread
,
256
,
8192
,
"Bytes of auxillary workspace per thread.
\n
"
"This workspace is used for certain temporary data structures"
" during the operation of a worker thread.
\n
"
"One use is for the io-vectors for writing requests and"
" responses to sockets, having too little space will"
" result in more writev(2) system calls, having too much"
" just wastes the space.
\n
"
,
DELAYED_EFFECT
,
"2048"
,
"bytes"
},
{
"http_req_hdr_len"
,
tweak_bytes_u
,
&
mgt_param
.
http_req_hdr_len
,
40
,
UINT_MAX
,
"Maximum length of any HTTP client request header we will "
"allow. The limit is inclusive its continuation lines.
\n
"
,
0
,
"8k"
,
"bytes"
},
{
"http_req_size"
,
tweak_bytes_u
,
&
mgt_param
.
http_req_size
,
256
,
UINT_MAX
,
"Maximum number of bytes of HTTP client request we will deal "
"with. This is a limit on all bytes up to the double blank "
"line which ends the HTTP request.
\n
"
"The memory for the request is allocated from the client "
"workspace (param: workspace_client) and this parameter limits "
"how much of that the request is allowed to take up."
,
0
,
"32k"
,
"bytes"
},
{
"http_resp_hdr_len"
,
tweak_bytes_u
,
&
mgt_param
.
http_resp_hdr_len
,
40
,
UINT_MAX
,
"Maximum length of any HTTP backend response header we will "
"allow. The limit is inclusive its continuation lines.
\n
"
,
0
,
"8k"
,
"bytes"
},
{
"http_resp_size"
,
tweak_bytes_u
,
&
mgt_param
.
http_resp_size
,
256
,
UINT_MAX
,
"Maximum number of bytes of HTTP backend resonse we will deal "
"with. This is a limit on all bytes up to the double blank "
"line which ends the HTTP request.
\n
"
"The memory for the request is allocated from the worker "
"workspace (param: thread_pool_workspace) and this parameter "
"limits how much of that the request is allowed to take up."
,
0
,
"32k"
,
"bytes"
},
{
"http_max_hdr"
,
tweak_uint
,
&
mgt_param
.
http_max_hdr
,
32
,
65535
,
"Maximum number of HTTP headers we will deal with in "
"client request or backend reponses. "
"Note that the first line occupies five header fields.
\n
"
"This parameter does not influence storage consumption, "
"objects allocate exact space for the headers they store.
\n
"
,
0
,
"64"
,
"header lines"
},
{
"vsl_buffer"
,
tweak_bytes_u
,
&
mgt_param
.
vsl_buffer
,
1024
,
UINT_MAX
,
"Bytes of (req-/backend-)workspace dedicated to buffering"
" VSL records.
\n
"
"At a bare minimum, this must be longer than"
" the longest HTTP header to be logged.
\n
"
"Setting this too high costs memory, setting it too low"
" will cause more VSL flushes and likely increase"
" lock-contention on the VSL mutex.
\n
"
"Minimum is 1k bytes."
,
0
,
"4k"
,
"bytes"
},
{
"shm_reclen"
,
tweak_bytes_u
,
&
mgt_param
.
shm_reclen
,
16
,
65535
,
"Maximum number of bytes in SHM log record.
\n
"
"Maximum is 65535 bytes."
,
0
,
"255"
,
"bytes"
},
{
"default_grace"
,
tweak_timeout_double
,
&
mgt_param
.
default_grace
,
0
,
UINT_MAX
,
"Default grace period. We will deliver an object "
"this long after it has expired, provided another thread "
"is attempting to get a new copy.
\n
"
"Objects already cached will not be affected by changes "
"made until they are fetched from the backend again.
\n
"
,
DELAYED_EFFECT
,
"10"
,
"seconds"
},
{
"default_keep"
,
tweak_timeout_double
,
&
mgt_param
.
default_keep
,
0
,
UINT_MAX
,
"Default keep period. We will keep a useless object "
"around this long, making it available for conditional "
"backend fetches. "
"That means that the object will be removed from the "
"cache at the end of ttl+grace+keep."
,
DELAYED_EFFECT
,
"0"
,
"seconds"
},
{
"timeout_idle"
,
tweak_timeout_double
,
&
mgt_param
.
timeout_idle
,
0
,
UINT_MAX
,
"Idle timeout for client connections.
\n
"
"A connection is considered idle, until we receive"
" a non-white-space character on it."
,
0
,
"5"
,
"seconds"
},
{
"timeout_req"
,
tweak_timeout_double
,
&
mgt_param
.
timeout_req
,
0
,
UINT_MAX
,
"Max time to receive clients request header, measured"
" from first non-white-space character to double CRNL."
,
0
,
"2"
,
"seconds"
},
{
"expiry_sleep"
,
tweak_timeout_double
,
&
mgt_param
.
expiry_sleep
,
0
,
60
,
"How long the expiry thread sleeps when there is nothing "
"for it to do.
\n
"
,
0
,
"1"
,
"seconds"
},
{
"pipe_timeout"
,
tweak_timeout
,
&
mgt_param
.
pipe_timeout
,
0
,
0
,
"Idle timeout for PIPE sessions. "
"If nothing have been received in either direction for "
"this many seconds, the session is closed.
\n
"
,
0
,
"60"
,
"seconds"
},
{
"send_timeout"
,
tweak_timeout
,
&
mgt_param
.
send_timeout
,
0
,
0
,
"Send timeout for client connections. "
"If the HTTP response hasn't been transmitted in this many
\n
"
"seconds the session is closed.
\n
"
"See setsockopt(2) under SO_SNDTIMEO for more information."
,
DELAYED_EFFECT
,
"600"
,
"seconds"
},
{
"idle_send_timeout"
,
tweak_timeout
,
&
mgt_param
.
idle_send_timeout
,
0
,
0
,
"Time to wait with no data sent. "
"If no data has been transmitted in this many
\n
"
"seconds the session is closed.
\n
"
"See setsockopt(2) under SO_SNDTIMEO for more information."
,
DELAYED_EFFECT
,
"60"
,
"seconds"
},
{
"auto_restart"
,
tweak_bool
,
&
mgt_param
.
auto_restart
,
0
,
0
,
"Restart child process automatically if it dies.
\n
"
,
0
,
"on"
,
"bool"
},
{
"nuke_limit"
,
tweak_uint
,
&
mgt_param
.
nuke_limit
,
0
,
UINT_MAX
,
"Maximum number of objects we attempt to nuke in order"
"to make space for a object body."
,
EXPERIMENTAL
,
"50"
,
"allocations"
},
{
"fetch_chunksize"
,
tweak_bytes
,
&
mgt_param
.
fetch_chunksize
,
4
*
1024
,
UINT_MAX
,
"The default chunksize used by fetcher. "
"This should be bigger than the majority of objects with "
"short TTLs.
\n
"
"Internal limits in the storage_file module makes increases "
"above 128kb a dubious idea."
,
EXPERIMENTAL
,
"128k"
,
"bytes"
},
{
"fetch_maxchunksize"
,
tweak_bytes
,
&
mgt_param
.
fetch_maxchunksize
,
64
*
1024
,
UINT_MAX
,
"The maximum chunksize we attempt to allocate from storage. "
"Making this too large may cause delays and storage "
"fragmentation.
\n
"
,
EXPERIMENTAL
,
"256m"
,
"bytes"
},
{
"accept_filter"
,
tweak_bool
,
&
mgt_param
.
accept_filter
,
0
,
0
,
"Enable kernel accept-filters, if supported by the kernel."
,
MUST_RESTART
,
"on"
,
"bool"
},
{
"listen_address"
,
tweak_listen_address
,
NULL
,
0
,
0
,
"Whitespace separated list of network endpoints where "
"Varnish will accept requests.
\n
"
"Possible formats: host, host:port, :port"
,
MUST_RESTART
,
":80"
},
{
"listen_depth"
,
tweak_uint
,
&
mgt_param
.
listen_depth
,
0
,
UINT_MAX
,
"Listen queue depth."
,
MUST_RESTART
,
"1024"
,
"connections"
},
{
"cli_buffer"
,
tweak_bytes_u
,
&
mgt_param
.
cli_buffer
,
4096
,
UINT_MAX
,
"Size of buffer for CLI command input."
"
\n
You may need to increase this if you have big VCL files "
"and use the vcl.inline CLI command.
\n
"
"NB: Must be specified with -p to have effect.
\n
"
,
0
,
"8k"
,
"bytes"
},
{
"cli_limit"
,
tweak_bytes_u
,
&
mgt_param
.
cli_limit
,
128
,
99999999
,
"Maximum size of CLI response. If the response exceeds"
" this limit, the reponse code will be 201 instead of"
" 200 and the last line will indicate the truncation."
,
0
,
"48k"
,
"bytes"
},
{
"cli_timeout"
,
tweak_timeout
,
&
mgt_param
.
cli_timeout
,
0
,
0
,
"Timeout for the childs replies to CLI requests from "
"the mgt_param."
,
0
,
"10"
,
"seconds"
},
{
"ping_interval"
,
tweak_uint
,
&
mgt_param
.
ping_interval
,
0
,
UINT_MAX
,
"Interval between pings from parent to child.
\n
"
"Zero will disable pinging entirely, which makes "
"it possible to attach a debugger to the child."
,
MUST_RESTART
,
"3"
,
"seconds"
},
{
"lru_interval"
,
tweak_timeout
,
&
mgt_param
.
lru_timeout
,
0
,
0
,
"Grace period before object moves on LRU list.
\n
"
"Objects are only moved to the front of the LRU "
"list if they have not been moved there already inside "
"this timeout period. This reduces the amount of lock "
"operations necessary for LRU list access."
,
EXPERIMENTAL
,
"2"
,
"seconds"
},
{
"cc_command"
,
tweak_string
,
&
mgt_cc_cmd
,
0
,
0
,
"Command used for compiling the C source code to a "
"dlopen(3) loadable object. Any occurrence of %s in "
"the string will be replaced with the source file name, "
"and %o will be replaced with the output file name."
,
MUST_RELOAD
,
VCC_CC
,
NULL
},
{
"max_restarts"
,
tweak_uint
,
&
mgt_param
.
max_restarts
,
0
,
UINT_MAX
,
"Upper limit on how many times a request can restart."
"
\n
Be aware that restarts are likely to cause a hit against "
"the backend, so don't increase thoughtlessly.
\n
"
,
0
,
"4"
,
"restarts"
},
{
"esi_syntax"
,
tweak_uint
,
&
mgt_param
.
esi_syntax
,
0
,
UINT_MAX
,
"Bitmap controlling ESI parsing code:
\n
"
" 0x00000001 - Don't check if it looks like XML
\n
"
" 0x00000002 - Ignore non-esi elements
\n
"
" 0x00000004 - Emit parsing debug records
\n
"
" 0x00000008 - Force-split parser input (debugging)
\n
"
"
\n
"
"Use 0x notation and do the bitor in your head :-)
\n
"
,
0
,
"0"
,
"bitmap"
},
{
"max_esi_depth"
,
tweak_uint
,
&
mgt_param
.
max_esi_depth
,
0
,
UINT_MAX
,
"Maximum depth of esi:include processing.
\n
"
,
0
,
"5"
,
"levels"
},
{
"connect_timeout"
,
tweak_timeout_double
,
&
mgt_param
.
connect_timeout
,
0
,
UINT_MAX
,
"Default connection timeout for backend connections. "
"We only try to connect to the backend for this many "
"seconds before giving up. "
"VCL can override this default value for each backend and "
"backend request."
,
0
,
"0.7"
,
"s"
},
{
"first_byte_timeout"
,
tweak_timeout_double
,
&
mgt_param
.
first_byte_timeout
,
0
,
UINT_MAX
,
"Default timeout for receiving first byte from backend. "
"We only wait for this many seconds for the first "
"byte before giving up. A value of 0 means it will never time "
"out. "
"VCL can override this default value for each backend and "
"backend request. This parameter does not apply to pipe."
,
0
,
"60"
,
"s"
},
{
"between_bytes_timeout"
,
tweak_timeout_double
,
&
mgt_param
.
between_bytes_timeout
,
0
,
UINT_MAX
,
"Default timeout between bytes when receiving data from "
"backend. "
"We only wait for this many seconds between bytes "
"before giving up. A value of 0 means it will never time out. "
"VCL can override this default value for each backend request "
"and backend request. This parameter does not apply to pipe."
,
0
,
"60"
,
"s"
},
{
"acceptor_sleep_max"
,
tweak_timeout_double
,
&
mgt_param
.
acceptor_sleep_max
,
0
,
10
,
"If we run out of resources, such as file descriptors or "
"worker threads, the acceptor will sleep between accepts.
\n
"
"This parameter limits how long it can sleep between "
"attempts to accept new connections."
,
EXPERIMENTAL
,
"0.050"
,
"s"
},
{
"acceptor_sleep_incr"
,
tweak_timeout_double
,
&
mgt_param
.
acceptor_sleep_incr
,
0
,
1
,
"If we run out of resources, such as file descriptors or "
"worker threads, the acceptor will sleep between accepts.
\n
"
"This parameter control how much longer we sleep, each time "
"we fail to accept a new connection."
,
EXPERIMENTAL
,
"0.001"
,
"s"
},
{
"acceptor_sleep_decay"
,
tweak_generic_double
,
&
mgt_param
.
acceptor_sleep_decay
,
0
,
1
,
"If we run out of resources, such as file descriptors or "
"worker threads, the acceptor will sleep between accepts.
\n
"
"This parameter (multiplicatively) reduce the sleep duration "
"for each succesfull accept. (ie: 0.9 = reduce by 10%)"
,
EXPERIMENTAL
,
"0.900"
,
""
},
{
"clock_skew"
,
tweak_uint
,
&
mgt_param
.
clock_skew
,
0
,
UINT_MAX
,
"How much clockskew we are willing to accept between the "
"backend and our own clock."
,
0
,
"10"
,
"s"
},
{
"prefer_ipv6"
,
tweak_bool
,
&
mgt_param
.
prefer_ipv6
,
0
,
0
,
"Prefer IPv6 address when connecting to backends which "
"have both IPv4 and IPv6 addresses."
,
0
,
"off"
,
"bool"
},
{
"session_max"
,
tweak_uint
,
&
mgt_param
.
max_sess
,
1000
,
UINT_MAX
,
"Maximum number of sessions we will allocate from one pool "
"before just dropping connections.
\n
"
"This is mostly an anti-DoS measure, and setting it plenty "
"high should not hurt, as long as you have the memory for "
"it.
\n
"
,
0
,
"100000"
,
"sessions"
},
{
"timeout_linger"
,
tweak_timeout_double
,
&
mgt_param
.
timeout_linger
,
0
,
UINT_MAX
,
"How long time the workerthread lingers on an idle session "
"before handing it over to the waiter.
\n
"
"When sessions are reused, as much as half of all reuses "
"happen within the first 100 msec of the previous request "
"completing.
\n
"
"Setting this too high results in worker threads not doing "
"anything for their keep, setting it too low just means that "
"more sessions take a detour around the waiter."
,
EXPERIMENTAL
,
"0.050"
,
"seconds"
},
{
"log_local_address"
,
tweak_bool
,
&
mgt_param
.
log_local_addr
,
0
,
0
,
"Log the local address on the TCP connection in the "
"SessionOpen VSL record.
\n
"
"Disabling this saves a getsockname(2) system call "
"per TCP connection.
\n
"
,
0
,
"on"
,
"bool"
},
{
"waiter"
,
tweak_waiter
,
NULL
,
0
,
0
,
"Select the waiter kernel interface.
\n
"
,
WIZARD
|
MUST_RESTART
,
WAITER_DEFAULT
,
NULL
},
{
"ban_dups"
,
tweak_bool
,
&
mgt_param
.
ban_dups
,
0
,
0
,
"Detect and eliminate duplicate bans.
\n
"
,
0
,
"on"
,
"bool"
},
{
"syslog_cli_traffic"
,
tweak_bool
,
&
mgt_param
.
syslog_cli_traffic
,
0
,
0
,
"Log all CLI traffic to syslog(LOG_INFO).
\n
"
,
0
,
"on"
,
"bool"
},
{
"ban_lurker_sleep"
,
tweak_timeout_double
,
&
mgt_param
.
ban_lurker_sleep
,
0
,
UINT_MAX
,
"How long time does the ban lurker thread sleeps between "
"successful attempts to push the last item up the ban "
" list. It always sleeps a second when nothing can be done.
\n
"
"A value of zero disables the ban lurker."
,
0
,
"0.01"
,
"s"
},
{
"saintmode_threshold"
,
tweak_uint
,
&
mgt_param
.
saintmode_threshold
,
0
,
UINT_MAX
,
"The maximum number of objects held off by saint mode before "
"no further will be made to the backend until one times out. "
"A value of 0 disables saintmode."
,
EXPERIMENTAL
,
"10"
,
"objects"
},
{
"http_range_support"
,
tweak_bool
,
&
mgt_param
.
http_range_support
,
0
,
0
,
"Enable support for HTTP Range headers.
\n
"
,
0
,
"on"
,
"bool"
},
{
"http_gzip_support"
,
tweak_bool
,
&
mgt_param
.
http_gzip_support
,
0
,
0
,
"Enable gzip support. When enabled Varnish will compress "
"uncompressed objects before they are stored in the cache. "
"If a client does not support gzip encoding Varnish will "
"uncompress compressed objects on demand. Varnish will also "
"rewrite the Accept-Encoding header of clients indicating "
"support for gzip to:
\n
"
" Accept-Encoding: gzip
\n\n
"
"Clients that do not support gzip will have their "
"Accept-Encoding header removed. For more information on how "
"gzip is implemented please see the chapter on gzip in the "
"Varnish reference."
,
EXPERIMENTAL
,
"on"
,
"bool"
},
{
"gzip_level"
,
tweak_uint
,
&
mgt_param
.
gzip_level
,
0
,
9
,
"Gzip compression level: 0=debug, 1=fast, 9=best"
,
0
,
"6"
,
""
},
{
"gzip_memlevel"
,
tweak_uint
,
&
mgt_param
.
gzip_memlevel
,
1
,
9
,
"Gzip memory level 1=slow/least, 9=fast/most compression.
\n
"
"Memory impact is 1=1k, 2=2k, ... 9=256k."
,
0
,
"8"
,
""
},
{
"gzip_buffer"
,
tweak_bytes_u
,
&
mgt_param
.
gzip_buffer
,
2048
,
UINT_MAX
,
"Size of malloc buffer used for gzip processing.
\n
"
"These buffers are used for in-transit data,"
" for instance gunzip'ed data being sent to a client."
"Making this space to small results in more overhead,"
" writes to sockets etc, making it too big is probably"
" just a waste of memory."
,
EXPERIMENTAL
,
"32k"
,
"bytes"
},
{
"shortlived"
,
tweak_timeout_double
,
&
mgt_param
.
shortlived
,
0
,
UINT_MAX
,
"Objects created with TTL shorter than this are always "
"put in transient storage.
\n
"
,
0
,
"10.0"
,
"s"
},
{
"critbit_cooloff"
,
tweak_timeout_double
,
&
mgt_param
.
critbit_cooloff
,
60
,
254
,
"How long time the critbit hasher keeps deleted objheads "
"on the cooloff list.
\n
"
,
WIZARD
,
"180.0"
,
"s"
},
{
"vcl_dir"
,
tweak_string
,
&
mgt_vcl_dir
,
0
,
0
,
"Directory from which relative VCL filenames (vcl.load and "
"include) are opened."
,
0
,
#ifdef VARNISH_VCL_DIR
VARNISH_VCL_DIR
,
#else
"."
,
#endif
NULL
},
{
"vmod_dir"
,
tweak_string
,
&
mgt_vmod_dir
,
0
,
0
,
"Directory where VCL modules are to be found."
,
0
,
#ifdef VARNISH_VMOD_DIR
VARNISH_VMOD_DIR
,
#else
"."
,
#endif
NULL
},
{
"vcc_err_unref"
,
tweak_bool
,
&
mgt_vcc_err_unref
,
0
,
0
,
"Unreferenced VCL objects result in error.
\n
"
,
0
,
"on"
,
"bool"
},
{
"vcc_allow_inline_c"
,
tweak_bool
,
&
mgt_vcc_allow_inline_c
,
0
,
0
,
"Allow inline C code in VCL.
\n
"
,
0
,
"on"
,
"bool"
},
{
"vcc_unsafe_path"
,
tweak_bool
,
&
mgt_vcc_unsafe_path
,
0
,
0
,
"Allow '/' in vmod & include paths.
\n
"
"Allow 'import ... from ...'.
\n
"
,
0
,
"on"
,
"bool"
},
{
"pcre_match_limit"
,
tweak_uint
,
&
mgt_param
.
vre_limits
.
match
,
1
,
UINT_MAX
,
"The limit for the number of internal matching function"
" calls in a pcre_exec() execution."
,
0
,
"10000"
,
""
},
{
"pcre_match_limit_recursion"
,
tweak_uint
,
&
mgt_param
.
vre_limits
.
match_recursion
,
1
,
UINT_MAX
,
"The limit for the number of internal matching function"
" recursions in a pcre_exec() execution."
,
0
,
"10000"
,
""
},
{
"vsl_space"
,
tweak_bytes
,
&
mgt_param
.
vsl_space
,
1024
*
1024
,
0
,
"The amount of space to allocate for the VSL fifo buffer"
" in the VSM memory segment."
" If you make this too small, varnish{ncsa|log} etc will"
" not be able to keep up."
" Making it too large just costs memory resources."
,
MUST_RESTART
,
"80M"
,
"bytes"
},
{
"vsm_space"
,
tweak_bytes
,
&
mgt_param
.
vsm_space
,
1024
*
1024
,
0
,
"The amount of space to allocate for stats counters"
" in the VSM memory segment."
" If you make this too small, some counters will be"
" invisible."
" Making it too large just costs memory resources."
,
MUST_RESTART
,
"1M"
,
"bytes"
},
{
"busyobj_worker_cache"
,
tweak_bool
,
&
mgt_param
.
bo_cache
,
0
,
0
,
"Cache free busyobj per worker thread."
"Disable this if you have very high hitrates and want"
"to save the memory of one busyobj per worker thread."
,
0
,
"false"
,
""
},
{
"pool_vbc"
,
tweak_poolparam
,
&
mgt_param
.
vbc_pool
,
0
,
10000
,
"Parameters for backend connection memory pool.
\n
"
MEMPOOL_TEXT
,
0
,
"10,100,10"
,
""
},
{
"pool_req"
,
tweak_poolparam
,
&
mgt_param
.
req_pool
,
0
,
10000
,
"Parameters for per worker pool request memory pool.
\n
"
MEMPOOL_TEXT
,
0
,
"10,100,10"
,
""
},
{
"pool_sess"
,
tweak_poolparam
,
&
mgt_param
.
sess_pool
,
0
,
10000
,
"Parameters for per worker pool session memory pool.
\n
"
MEMPOOL_TEXT
,
0
,
"10,100,10"
,
""
},
{
"pool_vbo"
,
tweak_poolparam
,
&
mgt_param
.
vbo_pool
,
0
,
10000
,
"Parameters for backend object fetch memory pool.
\n
"
MEMPOOL_TEXT
,
0
,
"10,100,10"
,
""
},
{
"obj_readonly"
,
tweak_bool
,
&
mgt_param
.
obj_readonly
,
0
,
0
,
"If set, we do not update obj.hits and obj.lastuse to"
"avoid dirtying VM pages associated with cached objects."
,
0
,
"false"
,
""
},
{
NULL
,
NULL
,
NULL
}
};
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment