r4456 - in trunk/varnish-cache: . bin/varnishd bin/varnishtest/tests
phk at projects.linpro.no
phk at projects.linpro.no
Wed Jan 13 23:04:15 CET 2010
Author: phk
Date: 2010-01-13 23:04:15 +0100 (Wed, 13 Jan 2010)
New Revision: 4456
Modified:
trunk/varnish-cache/bin/varnishd/cache.h
trunk/varnish-cache/bin/varnishd/cache_center.c
trunk/varnish-cache/bin/varnishd/cache_http.c
trunk/varnish-cache/bin/varnishd/cache_pool.c
trunk/varnish-cache/bin/varnishd/cache_session.c
trunk/varnish-cache/bin/varnishd/cache_wrw.c
trunk/varnish-cache/bin/varnishd/heritage.h
trunk/varnish-cache/bin/varnishd/mgt_param.c
trunk/varnish-cache/bin/varnishd/stevedore.c
trunk/varnish-cache/bin/varnishd/stevedore.h
trunk/varnish-cache/bin/varnishtest/tests/b00000.vtc
trunk/varnish-cache/configure.ac
Log:
Make the number of HTTP headers a parameter, and allocate only as
many as we need for the objects.
This passes the tests, but performance tests have not been performed
and there may be alignment issues on platforms with strict alignment.
If this works out, the benefits will include:
A) no need to recompile if you need more than 64 HTTP headers.
B) You do not waste a kilobyte per object, on space for headers you do not have.
Reports very welcome!
Modified: trunk/varnish-cache/bin/varnishd/cache.h
===================================================================
--- trunk/varnish-cache/bin/varnishd/cache.h 2010-01-13 14:55:46 UTC (rev 4455)
+++ trunk/varnish-cache/bin/varnishd/cache.h 2010-01-13 22:04:15 UTC (rev 4456)
@@ -71,16 +71,8 @@
HTTP_HDR_RESPONSE,
/* HTTP header lines */
HTTP_HDR_FIRST,
- HTTP_HDR_MAX = HTTP_HDR_MAX_VAL
};
-/* Note: intentionally not IOV_MAX unless it has to be */
-#if (IOV_MAX < (HTTP_HDR_MAX_VAL * 2))
-# define MAX_IOVS IOV_MAX
-#else
-# define MAX_IOVS (HTTP_HDR_MAX_VAL * 2)
-#endif
-
struct cli;
struct vsb;
struct sess;
@@ -154,11 +146,12 @@
int status;
double protover;
- txt hd[HTTP_HDR_MAX];
- unsigned char hdf[HTTP_HDR_MAX];
+ unsigned shd; /* Size of hd space */
+ txt *hd;
+ unsigned char *hdf;
#define HDF_FILTER (1 << 0) /* Filtered by Connection */
#define HDF_COPY (1 << 1) /* Copy this field */
- unsigned nhd;
+ unsigned nhd; /* Next free hd */
};
/*--------------------------------------------------------------------
@@ -214,8 +207,9 @@
int *wfd;
unsigned werr; /* valid after WRK_Flush() */
- struct iovec iov[MAX_IOVS];
- int niov;
+ struct iovec *iov;
+ unsigned siov;
+ unsigned niov;
ssize_t liov;
struct VCL_conf *vcl;
@@ -227,7 +221,7 @@
struct http_conn htc[1];
struct ws ws[1];
- struct http http[3];
+ struct http *http[3];
struct http *bereq;
struct http *beresp1;
struct http *beresp;
@@ -341,7 +335,7 @@
double last_modified;
double last_lru;
- struct http http[1];
+ struct http *http;
VTAILQ_HEAD(, storage) store;
@@ -513,8 +507,10 @@
void Fetch_Init(void);
/* cache_http.c */
+unsigned HTTP_estimate(unsigned nhttp);
+struct http *HTTP_create(void *p, unsigned nhttp);
const char *http_StatusMessage(unsigned);
-unsigned http_EstimateWS(const struct http *fm, unsigned how);
+unsigned http_EstimateWS(const struct http *fm, unsigned how, unsigned *nhd);
void HTTP_Init(void);
void http_ClrHeader(struct http *to);
unsigned http_Write(struct worker *w, const struct http *hp, int resp);
Modified: trunk/varnish-cache/bin/varnishd/cache_center.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/cache_center.c 2010-01-13 14:55:46 UTC (rev 4455)
+++ trunk/varnish-cache/bin/varnishd/cache_center.c 2010-01-13 22:04:15 UTC (rev 4456)
@@ -184,7 +184,7 @@
sp->obj->last_lru = sp->t_resp; /* XXX: locking ? */
sp->obj->last_use = sp->t_resp; /* XXX: locking ? */
}
- sp->wrk->resp = &sp->wrk->http[2];
+ sp->wrk->resp = sp->wrk->http[2];
http_Setup(sp->wrk->resp, sp->wrk->ws);
RES_BuildHttp(sp);
VCL_deliver_method(sp);
@@ -336,7 +336,7 @@
if (sp->obj == NULL) {
HSH_Prealloc(sp);
sp->wrk->cacheable = 0;
- sp->obj = STV_NewObject(sp, 0, 0);
+ sp->obj = STV_NewObject(sp, 0, 0, params->http_headers);
sp->obj->xid = sp->xid;
sp->obj->entered = sp->t_req;
} else {
@@ -421,7 +421,7 @@
int i;
struct http *hp, *hp2;
char *b;
- unsigned handling, l;
+ unsigned handling, l, nhttp;
int varyl = 0;
struct vsb *vary = NULL;
@@ -432,7 +432,7 @@
AZ(sp->vbe);
/* sp->wrk->http[0] is (still) bereq */
- sp->wrk->beresp = &sp->wrk->http[1];
+ sp->wrk->beresp = sp->wrk->http[1];
http_Setup(sp->wrk->beresp, sp->wrk->ws);
i = FetchHdr(sp);
@@ -441,7 +441,7 @@
* Save a copy before it might get mangled in VCL. When it comes to
* dealing with the body, we want to see the unadultered headers.
*/
- sp->wrk->beresp1 = &sp->wrk->http[2];
+ sp->wrk->beresp1 = sp->wrk->http[2];
*sp->wrk->beresp1 = *sp->wrk->beresp;
if (i) {
@@ -529,7 +529,7 @@
AZ(sp->objcore);
}
- l = http_EstimateWS(sp->wrk->beresp, HTTPH_A_INS);
+ l = http_EstimateWS(sp->wrk->beresp, HTTPH_A_INS, &nhttp);
if (vary != NULL)
l += varyl;
@@ -542,7 +542,7 @@
* XXX: also.
*/
- sp->obj = STV_NewObject(sp, l, sp->wrk->ttl);
+ sp->obj = STV_NewObject(sp, l, sp->wrk->ttl, nhttp);
if (sp->objhead != NULL) {
CHECK_OBJ_NOTNULL(sp->objhead, OBJHEAD_MAGIC);
@@ -861,7 +861,7 @@
AN(sp->objcore);
AN(sp->objhead);
WS_Reset(sp->wrk->ws, NULL);
- sp->wrk->bereq = &sp->wrk->http[0];
+ sp->wrk->bereq = sp->wrk->http[0];
http_Setup(sp->wrk->bereq, sp->wrk->ws);
http_FilterHeader(sp, HTTPH_R_FETCH);
VCL_miss_method(sp);
@@ -926,7 +926,7 @@
AZ(sp->obj);
WS_Reset(sp->wrk->ws, NULL);
- sp->wrk->bereq = &sp->wrk->http[0];
+ sp->wrk->bereq = sp->wrk->http[0];
http_Setup(sp->wrk->bereq, sp->wrk->ws);
http_FilterHeader(sp, HTTPH_R_PASS);
@@ -976,7 +976,7 @@
sp->acct_req.pipe++;
WS_Reset(sp->wrk->ws, NULL);
- sp->wrk->bereq = &sp->wrk->http[0];
+ sp->wrk->bereq = sp->wrk->http[0];
http_Setup(sp->wrk->bereq, sp->wrk->ws);
http_FilterHeader(sp, HTTPH_R_PIPE);
Modified: trunk/varnish-cache/bin/varnishd/cache_http.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/cache_http.c 2010-01-13 14:55:46 UTC (rev 4455)
+++ trunk/varnish-cache/bin/varnishd/cache_http.c 2010-01-13 22:04:15 UTC (rev 4456)
@@ -117,14 +117,49 @@
/*--------------------------------------------------------------------*/
+unsigned
+HTTP_estimate(unsigned nhttp)
+{
+
+ /* XXX: We trust the structs to size-aligned as necessary */
+ return (sizeof (struct http) + (sizeof (txt) + 1) * nhttp);
+}
+
+struct http *
+HTTP_create(void *p, unsigned nhttp)
+{
+ struct http *hp;
+
+ hp = p;
+ hp->magic = HTTP_MAGIC;
+ hp->hd = (void*)(hp + 1);
+ hp->shd = nhttp;
+ hp->hdf = (void*)(hp->hd + nhttp);
+ return (hp);
+}
+
+/*--------------------------------------------------------------------*/
+
void
http_Setup(struct http *hp, struct ws *ws)
{
+ unsigned shd;
+ txt *hd;
+ unsigned char *hdf;
+ /* XXX: This is not elegant, is it efficient ? */
+ shd = hp->shd;
+ hd = hp->hd;
+ hdf = hp->hdf;
memset(hp, 0, sizeof *hp);
+ memset(hd, 0, sizeof *hd * shd);
+ memset(hdf, 0, sizeof *hdf * shd);
hp->magic = HTTP_MAGIC;
hp->ws = ws;
hp->nhd = HTTP_HDR_FIRST;
+ hp->shd = shd;
+ hp->hd = hd;
+ hp->hdf = hdf;
}
/*--------------------------------------------------------------------*/
@@ -367,7 +402,7 @@
q--;
*q = '\0';
- if (hp->nhd < HTTP_HDR_MAX) {
+ if (hp->nhd < hp->shd) {
hp->hdf[hp->nhd] = 0;
hp->hd[hp->nhd].b = p;
hp->hd[hp->nhd].e = q;
@@ -556,7 +591,7 @@
http_SetH(struct http *to, unsigned n, const char *fm)
{
- assert(n < HTTP_HDR_MAX);
+ assert(n < to->shd);
AN(fm);
to->hd[n].b = TRUST_ME(fm);
to->hd[n].e = strchr(to->hd[n].b, '\0');
@@ -567,7 +602,7 @@
http_copyh(struct http *to, const struct http *fm, unsigned n)
{
- assert(n < HTTP_HDR_MAX);
+ assert(n < to->shd);
Tcheck(fm->hd[n]);
to->hd[n] = fm->hd[n];
to->hdf[n] = fm->hdf[n];
@@ -612,9 +647,9 @@
CHECK_OBJ_NOTNULL(fm, HTTP_MAGIC);
CHECK_OBJ_NOTNULL(to, HTTP_MAGIC);
- assert(n < HTTP_HDR_MAX);
+ assert(n < to->shd);
Tcheck(fm->hd[n]);
- if (to->nhd < HTTP_HDR_MAX) {
+ if (to->nhd < to->shd) {
to->hd[to->nhd] = fm->hd[n];
to->hdf[to->nhd] = 0;
to->nhd++;
@@ -630,11 +665,12 @@
*/
unsigned
-http_EstimateWS(const struct http *fm, unsigned how)
+http_EstimateWS(const struct http *fm, unsigned how, unsigned *nhd)
{
unsigned u, l;
l = 0;
+ *nhd = HTTP_HDR_FIRST;
CHECK_OBJ_NOTNULL(fm, HTTP_MAGIC);
for (u = 0; u < fm->nhd; u++) {
if (fm->hd[u].b == NULL)
@@ -647,6 +683,7 @@
#include "http_headers.h"
#undef HTTPH
l += Tlen(fm->hd[u]) + 1;
+ (*nhd)++;
// fm->hdf[u] |= HDF_COPY;
}
return (l);
@@ -755,7 +792,7 @@
{
CHECK_OBJ_NOTNULL(to, HTTP_MAGIC);
- if (to->nhd >= HTTP_HDR_MAX) {
+ if (to->nhd >= to->shd) {
VSL_stats->losthdr++;
WSL(w, SLT_LostHeader, fd, "%s", hdr);
return;
@@ -827,7 +864,7 @@
va_start(ap, fmt);
n = vsnprintf(to->ws->f, l, fmt, ap);
va_end(ap);
- if (n + 1 >= l || to->nhd >= HTTP_HDR_MAX) {
+ if (n + 1 >= l || to->nhd >= to->shd) {
VSL_stats->losthdr++;
WSL(w, SLT_LostHeader, fd, "%s", to->ws->f);
WS_Release(to->ws, 0);
Modified: trunk/varnish-cache/bin/varnishd/cache_pool.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/cache_pool.c 2010-01-13 14:55:46 UTC (rev 4455)
+++ trunk/varnish-cache/bin/varnishd/cache_pool.c 2010-01-13 22:04:15 UTC (rev 4456)
@@ -117,11 +117,16 @@
/*--------------------------------------------------------------------*/
static void *
-wrk_thread_real(struct wq *qp, unsigned shm_workspace, unsigned sess_workspace)
+wrk_thread_real(struct wq *qp, unsigned shm_workspace, unsigned sess_workspace,
+ unsigned nhttp, unsigned http_space, unsigned siov)
{
struct worker *w, ww;
unsigned char wlog[shm_workspace];
unsigned char ws[sess_workspace];
+ unsigned char http0[http_space];
+ unsigned char http1[http_space];
+ unsigned char http2[http_space];
+ struct iovec iov[siov];
struct SHA256Context sha256;
int stats_clean;
@@ -133,6 +138,11 @@
w->wlb = w->wlp = wlog;
w->wle = wlog + sizeof wlog;
w->sha256ctx = &sha256;
+ w->http[0] = HTTP_create(http0, nhttp);
+ w->http[1] = HTTP_create(http1, nhttp);
+ w->http[2] = HTTP_create(http2, nhttp);
+ w->iov = iov;
+ w->siov = siov;
AZ(pthread_cond_init(&w->cond, NULL));
WS_Init(w->ws, "wrk", ws, sess_workspace);
@@ -202,12 +212,19 @@
wrk_thread(void *priv)
{
struct wq *qp;
+ volatile unsigned nhttp;
+ unsigned siov;
CAST_OBJ_NOTNULL(qp, priv, WQ_MAGIC);
/* We need to snapshot these two for consistency */
+ nhttp = params->http_headers;
+ siov = nhttp * 2; /* XXX param ? */
+ if (siov > IOV_MAX)
+ siov = IOV_MAX;
return (wrk_thread_real(qp,
params->shm_workspace,
- params->sess_workspace));
+ params->sess_workspace,
+ nhttp, HTTP_estimate(nhttp), siov));
}
/*--------------------------------------------------------------------
Modified: trunk/varnish-cache/bin/varnishd/cache_session.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/cache_session.c 2010-01-13 14:55:46 UTC (rev 4455)
+++ trunk/varnish-cache/bin/varnishd/cache_session.c 2010-01-13 22:04:15 UTC (rev 4456)
@@ -60,8 +60,9 @@
#define SESSMEM_MAGIC 0x555859c5
struct sess sess;
- struct http http[2];
unsigned workspace;
+ void *wsp;
+ struct http *http[2];
VTAILQ_ENTRY(sessmem) list;
struct sockaddr_storage sockaddr[2];
};
@@ -99,25 +100,40 @@
ses_setup(struct sessmem *sm, const struct sockaddr *addr, unsigned len)
{
struct sess *sp;
- volatile unsigned u;
+ unsigned char *p;
+ volatile unsigned nws;
+ volatile unsigned nhttp;
+ unsigned l, hl;
if (sm == NULL) {
if (VSL_stats->n_sess_mem >= params->max_sess)
return (NULL);
/*
- * It is not necessary to lock mem_workspace, but we
- * need to cache it locally, to make sure we get a
- * consistent view of it.
+ * It is not necessary to lock these, but we need to
+ * cache them locally, to make sure we get a consistent
+ * view of the value.
*/
- u = params->sess_workspace;
- sm = malloc(sizeof *sm + u);
- if (sm == NULL)
+ nws = params->sess_workspace;
+ nhttp = params->http_headers;
+ hl = HTTP_estimate(nhttp);
+ l = sizeof *sm + nws + 2 * hl;
+ p = malloc(l);
+ if (p == NULL)
return (NULL);
+
/* Don't waste time zeroing the workspace */
- memset(sm, 0, sizeof *sm);
+ memset(p, 0, l - nws);
+
+ sm = (void*)p;
+ p += sizeof *sm;
sm->magic = SESSMEM_MAGIC;
- sm->workspace = u;
+ sm->workspace = nws;
VSL_stats->n_sess_mem++;
+ sm->http[0] = HTTP_create(p, nhttp);
+ p += hl;
+ sm->http[1] = HTTP_create(p, nhttp);
+ p += hl;
+ sm->wsp = p;
}
CHECK_OBJ_NOTNULL(sm, SESSMEM_MAGIC);
VSL_stats->n_sess++;
@@ -142,9 +158,9 @@
sp->sockaddrlen = len;
}
- WS_Init(sp->ws, "sess", (void *)(sm + 1), sm->workspace);
- sp->http = &sm->http[0];
- sp->http0 = &sm->http[1];
+ WS_Init(sp->ws, "sess", sm->wsp, sm->workspace);
+ sp->http = sm->http[0];
+ sp->http0 = sm->http[1];
SES_ResetBackendTimeouts(sp);
@@ -193,7 +209,7 @@
{
struct acct *b = &sp->acct;
struct sessmem *sm;
- unsigned workspace;
+ // unsigned workspace;
CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
sm = sp->mem;
@@ -213,10 +229,10 @@
free(sm);
} else {
/* Clean and prepare for reuse */
- workspace = sm->workspace;
- memset(sm, 0, sizeof *sm);
- sm->magic = SESSMEM_MAGIC;
- sm->workspace = workspace;
+ // workspace = sm->workspace;
+ // memset(sm, 0, sizeof *sm);
+ // sm->magic = SESSMEM_MAGIC;
+ // sm->workspace = workspace;
Lck_Lock(&ses_mem_mtx);
VTAILQ_INSERT_HEAD(&ses_free_mem[1 - ses_qp], sm, list);
Modified: trunk/varnish-cache/bin/varnishd/cache_wrw.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/cache_wrw.c 2010-01-13 14:55:46 UTC (rev 4455)
+++ trunk/varnish-cache/bin/varnishd/cache_wrw.c 2010-01-13 22:04:15 UTC (rev 4456)
@@ -153,7 +153,7 @@
return (0);
if (len == -1)
len = strlen(ptr);
- if (w->niov == MAX_IOVS)
+ if (w->niov == w->siov)
(void)WRW_Flush(w);
w->iov[w->niov].iov_base = TRUST_ME(ptr);
w->iov[w->niov].iov_len = len;
@@ -193,7 +193,7 @@
} while (0);
#elif defined(__sun) && defined(HAVE_SENDFILEV)
do {
- sendfilevec_t svvec[HTTP_HDR_MAX * 2 + 1];
+ sendfilevec_t svvec[params->http_headers * 2 + 1];
size_t xferred = 0, expected = 0;
int i;
for (i = 0; i < w->niov; i++) {
Modified: trunk/varnish-cache/bin/varnishd/heritage.h
===================================================================
--- trunk/varnish-cache/bin/varnishd/heritage.h 2010-01-13 14:55:46 UTC (rev 4455)
+++ trunk/varnish-cache/bin/varnishd/heritage.h 2010-01-13 22:04:15 UTC (rev 4456)
@@ -101,6 +101,7 @@
unsigned sess_workspace;
unsigned obj_workspace;
unsigned shm_workspace;
+ unsigned http_headers;
unsigned shm_reclen;
Modified: trunk/varnish-cache/bin/varnishd/mgt_param.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/mgt_param.c 2010-01-13 14:55:46 UTC (rev 4455)
+++ trunk/varnish-cache/bin/varnishd/mgt_param.c 2010-01-13 22:04:15 UTC (rev 4456)
@@ -493,6 +493,12 @@
"Minimum is 1024 bytes.",
DELAYED_EFFECT,
"16384", "bytes" },
+ { "http_headers", tweak_uint, &master.http_headers, 32, UINT_MAX,
+ "Maximum number of HTTP headers we will deal with.\n"
+ "This space is preallocated in sessions and workthreads only "
+ "objects allocate only space for the headers they store.\n",
+ 0,
+ "64", "header lines" },
{ "obj_workspace", tweak_uint, &master.obj_workspace, 0, UINT_MAX,
"Bytes of HTTP protocol workspace allocated for objects. "
"This space must be big enough for the entire HTTP protocol "
Modified: trunk/varnish-cache/bin/varnishd/stevedore.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/stevedore.c 2010-01-13 14:55:46 UTC (rev 4455)
+++ trunk/varnish-cache/bin/varnishd/stevedore.c 2010-01-13 22:04:15 UTC (rev 4456)
@@ -88,13 +88,15 @@
/*********************************************************************/
static void
-STV_InitObj(struct sess *sp, struct object *o, unsigned wsl)
+STV_InitObj(struct sess *sp, struct object *o, unsigned wsl, unsigned lhttp,
+ unsigned nhttp)
{
memset(o, 0, sizeof *o);
o->magic = OBJECT_MAGIC;
- WS_Init(o->ws_o, "obj", (o + 1), wsl);
+ o->http = HTTP_create(o + 1, nhttp);
+ WS_Init(o->ws_o, "obj", (char *)(o + 1) + lhttp, wsl);
WS_Assert(o->ws_o);
http_Setup(o->http, o->ws_o);
@@ -109,10 +111,11 @@
/*********************************************************************/
struct object *
-STV_NewObject(struct sess *sp, unsigned l, double ttl)
+STV_NewObject(struct sess *sp, unsigned l, double ttl, unsigned nhttp)
{
struct object *o;
struct storage *st;
+ unsigned lh;
(void)ttl;
if (l == 0)
@@ -120,21 +123,23 @@
if (params->obj_workspace > 0 && params->obj_workspace > l)
l = params->obj_workspace;
+ lh = HTTP_estimate(nhttp);
+
if (!sp->wrk->cacheable) {
- o = malloc(sizeof *o + l);
+ o = malloc(sizeof *o + l + lh);
XXXAN(o);
- STV_InitObj(sp, o, l);
+ STV_InitObj(sp, o, l, lh, nhttp);
return (o);
}
- st = STV_alloc(sp, sizeof *o + l, sp->objcore);
+ st = STV_alloc(sp, sizeof *o + l + lh, sp->objcore);
XXXAN(st);
- xxxassert(st->space >= (sizeof *o + l));
+ xxxassert(st->space >= (sizeof *o + l + lh));
st->len = st->space;
o = (void *)st->ptr; /* XXX: align ? */
- STV_InitObj(sp, o, st->space - sizeof *o);
+ STV_InitObj(sp, o, st->space - (sizeof *o + lh), lh, nhttp);
o->objstore = st;
return (o);
}
Modified: trunk/varnish-cache/bin/varnishd/stevedore.h
===================================================================
--- trunk/varnish-cache/bin/varnishd/stevedore.h 2010-01-13 14:55:46 UTC (rev 4455)
+++ trunk/varnish-cache/bin/varnishd/stevedore.h 2010-01-13 22:04:15 UTC (rev 4456)
@@ -68,7 +68,8 @@
VTAILQ_ENTRY(stevedore) list;
};
-struct object *STV_NewObject(struct sess *sp, unsigned len, double ttl);
+struct object *STV_NewObject(struct sess *sp, unsigned len, double ttl,
+ unsigned nhttp);
struct storage *STV_alloc(struct sess *sp, size_t size, struct objcore *oc);
void STV_trim(struct storage *st, size_t size);
void STV_free(struct storage *st);
Modified: trunk/varnish-cache/bin/varnishtest/tests/b00000.vtc
===================================================================
--- trunk/varnish-cache/bin/varnishtest/tests/b00000.vtc 2010-01-13 14:55:46 UTC (rev 4455)
+++ trunk/varnish-cache/bin/varnishtest/tests/b00000.vtc 2010-01-13 22:04:15 UTC (rev 4456)
@@ -9,7 +9,7 @@
txresp -body "012345\n"
} -start
-varnish v1 -vcl+backend {} -start
+varnish v1 -arg "-smalloc,1m" -vcl+backend {} -start
varnish v1 -expect n_object == 0
varnish v1 -expect client_conn == 0
Modified: trunk/varnish-cache/configure.ac
===================================================================
--- trunk/varnish-cache/configure.ac 2010-01-13 14:55:46 UTC (rev 4455)
+++ trunk/varnish-cache/configure.ac 2010-01-13 22:04:15 UTC (rev 4456)
@@ -415,13 +415,6 @@
fi
AC_DEFINE_UNQUOTED([VCC_CC],"$VCC_CC",[C compiler command line for VCL code])
-# Define HTTP_HDR_MAX_VAL
-AC_ARG_WITH(max-header-fields,
- AS_HELP_STRING([--with-max-header-fields=NUM],
- [How many header fields to support (default=64)]),
- [],
- [with_max_header_fields=64])
-
AC_DEFINE_UNQUOTED(HTTP_HDR_MAX_VAL, $with_max_header_fields, [Define maximum number of header fields supported by varnish ])
# Use jemalloc on Linux
More information about the varnish-commit
mailing list