Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
varnish-cache
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
varnishcache
varnish-cache
Commits
7de67d2d
Commit
7de67d2d
authored
Mar 30, 2014
by
Martin Blix Grydeland
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Backend fetch counters
Add per-backend VSC counters for traffic going in/out of this backend.
parent
33988772
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
70 additions
and
28 deletions
+70
-28
cache.h
bin/varnishd/cache/cache.h
+2
-2
cache_backend.c
bin/varnishd/cache/cache_backend.c
+1
-1
cache_backend.h
bin/varnishd/cache/cache_backend.h
+2
-2
cache_backend_cfg.c
bin/varnishd/cache/cache_backend_cfg.c
+11
-4
cache_dir.c
bin/varnishd/cache/cache_dir.c
+4
-4
cache_fetch.c
bin/varnishd/cache/cache_fetch.c
+5
-5
cache_http1_fetch.c
bin/varnishd/cache/cache_http1_fetch.c
+4
-4
cache_pipe.c
bin/varnishd/cache/cache_pipe.c
+11
-6
vsc_fields.h
include/tbl/vsc_fields.h
+30
-0
No files found.
bin/varnishd/cache/cache.h
View file @
7de67d2d
...
...
@@ -806,8 +806,8 @@ void VBE_DiscardHealth(const struct director *vdi);
struct
vbc
*
VDI_GetFd
(
struct
busyobj
*
);
int
VDI_Healthy
(
const
struct
director
*
);
void
VDI_CloseFd
(
struct
vbc
**
vbp
);
void
VDI_RecycleFd
(
struct
vbc
**
vbp
);
void
VDI_CloseFd
(
struct
vbc
**
vbp
,
const
struct
acct_bereq
*
);
void
VDI_RecycleFd
(
struct
vbc
**
vbp
,
const
struct
acct_bereq
*
);
void
VDI_AddHostHeader
(
struct
http
*
to
,
const
struct
vbc
*
vbc
);
void
VBE_Poll
(
void
);
void
VDI_Init
(
void
);
...
...
bin/varnishd/cache/cache_backend.c
View file @
7de67d2d
...
...
@@ -288,7 +288,7 @@ vbe_GetVbe(struct busyobj *bo, struct vdi_simple *vs)
VSL_Flush
(
bo
->
vsl
,
0
);
VTCP_close
(
&
vc
->
fd
);
VBE_DropRefConn
(
bp
);
VBE_DropRefConn
(
bp
,
NULL
);
vc
->
backend
=
NULL
;
VBE_ReleaseConn
(
vc
);
}
...
...
bin/varnishd/cache/cache_backend.h
View file @
7de67d2d
...
...
@@ -152,9 +152,9 @@ struct vbc {
void
VBE_ReleaseConn
(
struct
vbc
*
vc
);
/* cache_backend_cfg.c */
void
VBE_DropRefConn
(
struct
backend
*
);
void
VBE_DropRefConn
(
struct
backend
*
,
const
struct
acct_bereq
*
);
void
VBE_DropRefVcl
(
struct
backend
*
);
void
VBE_DropRefLocked
(
struct
backend
*
b
);
void
VBE_DropRefLocked
(
struct
backend
*
b
,
const
struct
acct_bereq
*
);
unsigned
VBE_Healthy
(
const
struct
backend
*
b
,
double
*
changed
);
/* cache_backend_poll.c */
...
...
bin/varnishd/cache/cache_backend_cfg.c
View file @
7de67d2d
...
...
@@ -97,7 +97,7 @@ VBE_Poll(void)
*/
void
VBE_DropRefLocked
(
struct
backend
*
b
)
VBE_DropRefLocked
(
struct
backend
*
b
,
const
struct
acct_bereq
*
acct
)
{
int
i
;
struct
vbc
*
vbe
,
*
vbe2
;
...
...
@@ -105,6 +105,13 @@ VBE_DropRefLocked(struct backend *b)
CHECK_OBJ_NOTNULL
(
b
,
BACKEND_MAGIC
);
assert
(
b
->
refcount
>
0
);
if
(
acct
!=
NULL
)
{
#define ACCT(foo) \
b->vsc->foo += acct->foo;
#include "tbl/acct_fields_bereq.h"
#undef ACCT
}
i
=
--
b
->
refcount
;
Lck_Unlock
(
&
b
->
mtx
);
if
(
i
>
0
)
...
...
@@ -131,11 +138,11 @@ VBE_DropRefVcl(struct backend *b)
Lck_Lock
(
&
b
->
mtx
);
b
->
vsc
->
vcls
--
;
VBE_DropRefLocked
(
b
);
VBE_DropRefLocked
(
b
,
NULL
);
}
void
VBE_DropRefConn
(
struct
backend
*
b
)
VBE_DropRefConn
(
struct
backend
*
b
,
const
struct
acct_bereq
*
acct
)
{
CHECK_OBJ_NOTNULL
(
b
,
BACKEND_MAGIC
);
...
...
@@ -143,7 +150,7 @@ VBE_DropRefConn(struct backend *b)
Lck_Lock
(
&
b
->
mtx
);
assert
(
b
->
n_conn
>
0
);
b
->
n_conn
--
;
VBE_DropRefLocked
(
b
);
VBE_DropRefLocked
(
b
,
acct
);
}
/*--------------------------------------------------------------------
...
...
bin/varnishd/cache/cache_dir.c
View file @
7de67d2d
...
...
@@ -40,7 +40,7 @@
/* Close a connection ------------------------------------------------*/
void
VDI_CloseFd
(
struct
vbc
**
vbp
)
VDI_CloseFd
(
struct
vbc
**
vbp
,
const
struct
acct_bereq
*
acct
)
{
struct
backend
*
bp
;
struct
vbc
*
vc
;
...
...
@@ -64,7 +64,7 @@ VDI_CloseFd(struct vbc **vbp)
vc
->
vsl
=
NULL
;
VTCP_close
(
&
vc
->
fd
);
VBE_DropRefConn
(
bp
);
VBE_DropRefConn
(
bp
,
acct
);
vc
->
backend
=
NULL
;
VBE_ReleaseConn
(
vc
);
}
...
...
@@ -72,7 +72,7 @@ VDI_CloseFd(struct vbc **vbp)
/* Recycle a connection ----------------------------------------------*/
void
VDI_RecycleFd
(
struct
vbc
**
vbp
)
VDI_RecycleFd
(
struct
vbc
**
vbp
,
const
struct
acct_bereq
*
acct
)
{
struct
backend
*
bp
;
struct
vbc
*
vc
;
...
...
@@ -95,7 +95,7 @@ VDI_RecycleFd(struct vbc **vbp)
Lck_Lock
(
&
bp
->
mtx
);
VSC_C_main
->
backend_recycle
++
;
VTAILQ_INSERT_HEAD
(
&
bp
->
connlist
,
vc
,
list
);
VBE_DropRefLocked
(
bp
);
VBE_DropRefLocked
(
bp
,
acct
);
}
/* Get a connection --------------------------------------------------*/
...
...
bin/varnishd/cache/cache_fetch.c
View file @
7de67d2d
...
...
@@ -319,7 +319,7 @@ vbf_stp_startfetch(struct worker *wrk, struct busyobj *bo)
if
(
bo
->
htc
.
body_status
==
BS_ERROR
)
{
AN
(
bo
->
vbc
);
VDI_CloseFd
(
&
bo
->
vbc
);
VDI_CloseFd
(
&
bo
->
vbc
,
&
bo
->
acct
);
VSLb
(
bo
->
vsl
,
SLT_VCL_Error
,
"Body cannot be fetched"
);
return
(
F_STP_ERROR
);
}
...
...
@@ -351,7 +351,7 @@ vbf_stp_startfetch(struct worker *wrk, struct busyobj *bo)
if
(
wrk
->
handling
==
VCL_RET_RETRY
)
{
AN
(
bo
->
vbc
);
VDI_CloseFd
(
&
bo
->
vbc
);
VDI_CloseFd
(
&
bo
->
vbc
,
&
bo
->
acct
);
bo
->
retries
++
;
if
(
bo
->
retries
<=
cache_param
->
max_retries
)
return
(
F_STP_RETRY
);
...
...
@@ -471,7 +471,7 @@ vbf_stp_fetch(struct worker *wrk, struct busyobj *bo)
if
(
vbf_beresp2obj
(
bo
))
{
(
void
)
VFP_Error
(
bo
,
"Could not get storage"
);
VDI_CloseFd
(
&
bo
->
vbc
);
VDI_CloseFd
(
&
bo
->
vbc
,
&
bo
->
acct
);
return
(
F_STP_ERROR
);
}
...
...
@@ -761,9 +761,9 @@ vbf_fetch_thread(struct worker *wrk, void *priv)
if
(
bo
->
vbc
!=
NULL
)
{
if
(
bo
->
should_close
)
VDI_CloseFd
(
&
bo
->
vbc
);
VDI_CloseFd
(
&
bo
->
vbc
,
&
bo
->
acct
);
else
VDI_RecycleFd
(
&
bo
->
vbc
);
VDI_RecycleFd
(
&
bo
->
vbc
,
&
bo
->
acct
);
AZ
(
bo
->
vbc
);
}
...
...
bin/varnishd/cache/cache_http1_fetch.c
View file @
7de67d2d
...
...
@@ -350,7 +350,7 @@ V1F_fetch_hdr(struct worker *wrk, struct busyobj *bo, struct req *req)
VSLb
(
bo
->
vsl
,
SLT_FetchError
,
"backend write error: %d (%s)"
,
errno
,
strerror
(
errno
));
VSLb_ts_busyobj
(
bo
,
"Bereq"
,
W_TIM_real
(
wrk
));
VDI_CloseFd
(
&
bo
->
vbc
);
VDI_CloseFd
(
&
bo
->
vbc
,
&
bo
->
acct
);
/* XXX: other cleanup ? */
return
(
retry
);
}
...
...
@@ -376,7 +376,7 @@ V1F_fetch_hdr(struct worker *wrk, struct busyobj *bo, struct req *req)
VSLb
(
bo
->
vsl
,
SLT_FetchError
,
"http %sread error: overflow"
,
first
?
"first "
:
""
);
VDI_CloseFd
(
&
bo
->
vbc
);
VDI_CloseFd
(
&
bo
->
vbc
,
&
bo
->
acct
);
/* XXX: other cleanup ? */
return
(
-
1
);
}
...
...
@@ -384,7 +384,7 @@ V1F_fetch_hdr(struct worker *wrk, struct busyobj *bo, struct req *req)
bo
->
acct
.
beresp_hdrbytes
+=
Tlen
(
htc
->
rxbuf
);
VSLb
(
bo
->
vsl
,
SLT_FetchError
,
"http %sread error: EOF"
,
first
?
"first "
:
""
);
VDI_CloseFd
(
&
bo
->
vbc
);
VDI_CloseFd
(
&
bo
->
vbc
,
&
bo
->
acct
);
/* XXX: other cleanup ? */
return
(
retry
);
}
...
...
@@ -401,7 +401,7 @@ V1F_fetch_hdr(struct worker *wrk, struct busyobj *bo, struct req *req)
if
(
HTTP1_DissectResponse
(
hp
,
htc
))
{
VSLb
(
bo
->
vsl
,
SLT_FetchError
,
"http format error"
);
VDI_CloseFd
(
&
bo
->
vbc
);
VDI_CloseFd
(
&
bo
->
vbc
,
&
bo
->
acct
);
/* XXX: other cleanup ? */
return
(
-
1
);
}
...
...
bin/varnishd/cache/cache_pipe.c
View file @
7de67d2d
...
...
@@ -70,7 +70,7 @@ rdf(int fd0, int fd1, ssize_t *pcnt)
}
static
void
pipecharge
(
struct
req
*
req
,
const
struct
acct_pipe
*
a
)
pipecharge
(
struct
req
*
req
,
const
struct
acct_pipe
*
a
,
struct
VSC_C_vbe
*
b
)
{
VSLb
(
req
->
vsl
,
SLT_PipeAcct
,
"%ju %ju %ju %ju"
,
...
...
@@ -83,6 +83,11 @@ pipecharge(struct req *req, const struct acct_pipe *a)
VSC_C_main
->
s_pipe_hdrbytes
+=
a
->
req
;
VSC_C_main
->
s_pipe_in
+=
a
->
in
;
VSC_C_main
->
s_pipe_out
+=
a
->
out
;
if
(
b
!=
NULL
)
{
b
->
pipe_hdrbytes
+=
a
->
bereq
;
b
->
pipe_out
+=
a
->
in
;
b
->
pipe_in
+=
a
->
out
;
}
Lck_Unlock
(
&
pipestat_mtx
);
}
...
...
@@ -110,7 +115,7 @@ PipeRequest(struct req *req, struct busyobj *bo)
vc
=
VDI_GetFd
(
bo
);
if
(
vc
==
NULL
)
{
pipecharge
(
req
,
&
acct
);
pipecharge
(
req
,
&
acct
,
NULL
);
SES_Close
(
req
->
sp
,
SC_OVERLOAD
);
return
;
}
...
...
@@ -133,9 +138,9 @@ PipeRequest(struct req *req, struct busyobj *bo)
VSLb_ts_req
(
req
,
"Pipe"
,
W_TIM_real
(
wrk
));
if
(
i
)
{
pipecharge
(
req
,
&
acct
);
pipecharge
(
req
,
&
acct
,
vc
->
backend
->
vsc
);
SES_Close
(
req
->
sp
,
SC_TX_PIPE
);
VDI_CloseFd
(
&
vc
);
VDI_CloseFd
(
&
vc
,
NULL
);
return
;
}
...
...
@@ -173,9 +178,9 @@ PipeRequest(struct req *req, struct busyobj *bo)
}
}
VSLb_ts_req
(
req
,
"PipeSess"
,
W_TIM_real
(
wrk
));
pipecharge
(
req
,
&
acct
);
pipecharge
(
req
,
&
acct
,
vc
->
backend
->
vsc
);
SES_Close
(
req
->
sp
,
SC_TX_PIPE
);
VDI_CloseFd
(
&
vc
);
VDI_CloseFd
(
&
vc
,
NULL
);
bo
->
vbc
=
NULL
;
}
...
...
include/tbl/vsc_fields.h
View file @
7de67d2d
...
...
@@ -184,6 +184,36 @@ VSC_F(happy, uint64_t, 0, 'b', info,
"Happy health probes"
,
""
)
VSC_F
(
bereq_hdrbytes
,
uint64_t
,
0
,
'a'
,
info
,
"Request header bytes"
,
"Total backend request header bytes sent"
)
VSC_F
(
bereq_bodybytes
,
uint64_t
,
0
,
'a'
,
info
,
"Request body bytes"
,
"Total backend request body bytes sent"
)
VSC_F
(
beresp_hdrbytes
,
uint64_t
,
0
,
'a'
,
info
,
"Response header bytes"
,
"Total backend response header bytes received"
)
VSC_F
(
beresp_bodybytes
,
uint64_t
,
0
,
'a'
,
info
,
"Response body bytes"
,
"Total backend response body bytes received"
)
VSC_F
(
pipe_hdrbytes
,
uint64_t
,
0
,
'a'
,
info
,
"Pipe request header bytes"
,
"Total request bytes sent for piped sessions"
)
VSC_F
(
pipe_out
,
uint64_t
,
0
,
'a'
,
info
,
"Piped bytes to backend"
,
"Total number of bytes forwarded to backend in"
" pipe sessions"
)
VSC_F
(
pipe_in
,
uint64_t
,
0
,
'a'
,
info
,
"Piped bytes from backend"
,
"Total number of bytes forwarded from backend in"
" pipe sessions"
)
#endif
...
...
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