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
a2dbc597
Commit
a2dbc597
authored
Nov 09, 2011
by
Poul-Henning Kamp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Renovate ban related statistics, add long descriptions etc.
parent
0fe28b30
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
112 additions
and
57 deletions
+112
-57
cache_ban.c
bin/varnishd/cache_ban.c
+32
-19
c00019.vtc
bin/varnishtest/tests/c00019.vtc
+11
-11
c00049.vtc
bin/varnishtest/tests/c00049.vtc
+15
-13
p00002.vtc
bin/varnishtest/tests/p00002.vtc
+1
-1
r00917.vtc
bin/varnishtest/tests/r00917.vtc
+1
-1
r01030.vtc
bin/varnishtest/tests/r01030.vtc
+5
-5
vsc_fields.h
include/tbl/vsc_fields.h
+47
-7
No files found.
bin/varnishd/cache_ban.c
View file @
a2dbc597
...
...
@@ -376,7 +376,6 @@ void
BAN_Insert
(
struct
ban
*
b
)
{
struct
ban
*
bi
,
*
be
;
unsigned
pcount
;
ssize_t
ln
;
double
t0
;
...
...
@@ -402,8 +401,10 @@ BAN_Insert(struct ban *b)
Lck_Lock
(
&
ban_mtx
);
VTAILQ_INSERT_HEAD
(
&
ban_head
,
b
,
list
);
ban_start
=
b
;
VSC_C_main
->
n_ban
++
;
VSC_C_main
->
n_ban_add
++
;
VSC_C_main
->
bans
++
;
VSC_C_main
->
bans_added
++
;
if
(
b
->
flags
&
BAN_F_REQ
)
VSC_C_main
->
bans_req
++
;
be
=
VTAILQ_LAST
(
&
ban_head
,
banhead_s
);
if
(
params
->
ban_dups
&&
be
!=
b
)
...
...
@@ -419,7 +420,6 @@ BAN_Insert(struct ban *b)
/* Hunt down duplicates, and mark them as gone */
bi
=
b
;
pcount
=
0
;
Lck_Lock
(
&
ban_mtx
);
while
(
bi
!=
be
)
{
bi
=
VTAILQ_NEXT
(
bi
,
list
);
...
...
@@ -429,11 +429,10 @@ BAN_Insert(struct ban *b)
if
(
memcmp
(
b
->
spec
+
8
,
bi
->
spec
+
8
,
ln
-
8
))
continue
;
bi
->
flags
|=
BAN_F_GONE
;
VSC_C_main
->
n_ban
_gone
++
;
pcount
++
;
VSC_C_main
->
bans
_gone
++
;
VSC_C_main
->
bans_dups
++
;
}
be
->
refcount
--
;
VSC_C_main
->
n_ban_dups
+=
pcount
;
Lck_Unlock
(
&
ban_mtx
);
}
...
...
@@ -520,20 +519,28 @@ BAN_Reload(const uint8_t *ban, unsigned len)
t0
=
ban_time
(
ban
);
assert
(
len
==
ban_len
(
ban
));
Lck_Lock
(
&
ban_mtx
);
VTAILQ_FOREACH
(
b
,
&
ban_head
,
list
)
{
t1
=
ban_time
(
b
->
spec
);
assert
(
t1
<
t2
);
t2
=
t1
;
if
(
t1
==
t0
)
if
(
t1
==
t0
)
{
Lck_Unlock
(
&
ban_mtx
);
return
;
}
if
(
t1
<
t0
)
break
;
if
(
!
memcmp
(
b
->
spec
+
8
,
ban
+
8
,
len
-
8
))
if
(
!
memcmp
(
b
->
spec
+
8
,
ban
+
8
,
len
-
8
))
{
gone
|=
BAN_F_GONE
;
VSC_C_main
->
bans_dups
++
;
VSC_C_main
->
bans_gone
++
;
}
}
VSC_C_main
->
n_ban
++
;
VSC_C_main
->
n_ban_ad
d
++
;
VSC_C_main
->
bans
++
;
VSC_C_main
->
bans_adde
d
++
;
b2
=
BAN_New
();
AN
(
b2
);
...
...
@@ -552,9 +559,13 @@ BAN_Reload(const uint8_t *ban, unsigned len)
for
(
b
=
VTAILQ_NEXT
(
b2
,
list
);
b
!=
NULL
;
b
=
VTAILQ_NEXT
(
b
,
list
))
{
if
(
b
->
flags
&
BAN_F_GONE
)
continue
;
if
(
!
memcmp
(
b
->
spec
+
8
,
ban
+
8
,
len
-
8
))
if
(
!
memcmp
(
b
->
spec
+
8
,
ban
+
8
,
len
-
8
))
{
b
->
flags
|=
BAN_F_GONE
;
VSC_C_main
->
bans_dups
++
;
VSC_C_main
->
bans_gone
++
;
}
}
Lck_Unlock
(
&
ban_mtx
);
}
/*--------------------------------------------------------------------
...
...
@@ -705,8 +716,8 @@ ban_check_object(struct object *o, const struct sess *sp, int has_req)
}
Lck_Lock
(
&
ban_mtx
);
VSC_C_main
->
n_ban_obj_test
++
;
VSC_C_main
->
n_ban_re_test
+=
tests
;
VSC_C_main
->
bans_tested
++
;
VSC_C_main
->
bans_tests_tested
+=
tests
;
if
(
b
==
oc
->
ban
&&
skipped
>
0
)
{
AZ
(
has_req
);
...
...
@@ -758,9 +769,11 @@ ban_CheckLast(void)
b
=
VTAILQ_LAST
(
&
ban_head
,
banhead_s
);
if
(
b
!=
VTAILQ_FIRST
(
&
ban_head
)
&&
b
->
refcount
==
0
)
{
if
(
b
->
flags
&
BAN_F_GONE
)
VSC_C_main
->
n_ban_gone
--
;
VSC_C_main
->
n_ban
--
;
VSC_C_main
->
n_ban_retire
++
;
VSC_C_main
->
bans_gone
--
;
if
(
b
->
flags
&
BAN_F_REQ
)
VSC_C_main
->
bans_req
--
;
VSC_C_main
->
bans
--
;
VSC_C_main
->
bans_deleted
++
;
VTAILQ_REMOVE
(
&
ban_head
,
b
,
list
);
}
else
{
b
=
NULL
;
...
...
@@ -888,7 +901,7 @@ ban_lurker_work(const struct sess *sp, unsigned pass)
if
(
!
(
b
->
flags
&
BAN_F_REQ
))
{
if
(
!
(
b
->
flags
&
BAN_F_GONE
))
{
b
->
flags
|=
BAN_F_GONE
;
VSC_C_main
->
n_ban
_gone
++
;
VSC_C_main
->
bans
_gone
++
;
}
if
(
params
->
diag_bitmap
&
0x80000
)
VSL
(
SLT_Debug
,
0
,
"lurker BAN %f now gone"
,
...
...
@@ -1090,6 +1103,6 @@ BAN_Init(void)
ban_magic
=
BAN_New
();
AN
(
ban_magic
);
ban_magic
->
flags
|=
BAN_F_GONE
;
VSC_C_main
->
n_ban
_gone
++
;
VSC_C_main
->
bans
_gone
++
;
BAN_Insert
(
ban_magic
);
}
bin/varnishtest/tests/c00019.vtc
View file @
a2dbc597
...
...
@@ -16,7 +16,7 @@ varnish v1 -vcl+backend {} -start
varnish v1 -cliok "ban.url FOO"
# There is one "magic" ban from boot
varnish v1 -expect
n_ban_ad
d == 2
varnish v1 -expect
bans_adde
d == 2
varnish v1 -cliok "ban.list"
# Our fetch is not affected by the ban
...
...
@@ -31,12 +31,12 @@ client c1 {
} -run
varnish v1 -cliok "ban.list"
varnish v1 -expect
n_ban_obj_test
== 0
varnish v1 -expect
n_ban_re_test
== 0
varnish v1 -expect
bans_tested
== 0
varnish v1 -expect
bans_tests_tested
== 0
# Add another ban
varnish v1 -cliok "ban.url FOO"
varnish v1 -expect
n_ban_ad
d == 3
varnish v1 -expect
bans_adde
d == 3
varnish v1 -cliok "ban.list"
# The cached object will be band, and a new
...
...
@@ -47,8 +47,8 @@ client c1 {
expect resp.http.foo == 2
} -run
varnish v1 -expect
n_ban_obj_test
== 1
varnish v1 -expect
n_ban_re_test
== 1
varnish v1 -expect
bans_tested
== 1
varnish v1 -expect
bans_tests_tested
== 1
varnish v1 -cliok "ban.list"
# Fetch the cached copy, just for grins
...
...
@@ -62,15 +62,15 @@ client c1 {
# Now add another two bans, Kilroy should not be hit
varnish v1 -cliok "ban.url KILROY"
varnish v1 -cliok "ban.url FOO"
varnish v1 -expect
n_ban_ad
d == 5
varnish v1 -expect
bans_adde
d == 5
# Enable dup removal of bans
varnish v1 -cliok "param.set ban_dups on"
# This should incapacitate the two previous FOO bans.
varnish v1 -cliok "ban.url FOO"
varnish v1 -expect
n_ban_ad
d == 6
varnish v1 -expect
n_ban
_dups == 3
varnish v1 -expect
bans_adde
d == 6
varnish v1 -expect
bans
_dups == 3
varnish v1 -cliok "ban.list"
# And we should get a fresh object from backend
...
...
@@ -81,8 +81,8 @@ client c1 {
} -run
# With only two objects having ever been compared
varnish v1 -expect
n_ban_obj_test
== 2
varnish v1 -expect
n_ban_re_test
== 2
varnish v1 -expect
bans_tested
== 2
varnish v1 -expect
bans_tests_tested
== 2
varnish v1 -cliok "ban.list"
# Test a bogus regexp
...
...
bin/varnishtest/tests/c00049.vtc
View file @
a2dbc597
...
...
@@ -49,8 +49,8 @@ client c1 {
delay 0.1
varnish v1 -cliok "ban req.url == /alpha"
varnish v1 -cliok "ban.list"
varnish v1 -expect
n_ban
== 2
varnish v1 -expect
n_ban
_gone == 1
varnish v1 -expect
bans
== 2
varnish v1 -expect
bans
_gone == 1
client c1 {
txreq -url "/beta"
...
...
@@ -61,7 +61,7 @@ client c1 {
delay 0.1
varnish v1 -cliok "ban obj.http.foo == /beta"
varnish v1 -cliok "ban.list"
varnish v1 -expect
n_ban
== 3
varnish v1 -expect
bans
== 3
client c1 {
txreq -url "/gamma"
...
...
@@ -72,7 +72,7 @@ client c1 {
delay 0.1
varnish v1 -cliok "ban obj.http.foo == /gamma"
varnish v1 -cliok "ban.list"
varnish v1 -expect
n_ban
== 4
varnish v1 -expect
bans
== 4
client c1 {
txreq -url "/delta"
...
...
@@ -83,22 +83,22 @@ client c1 {
delay 0.1
varnish v1 -cliok "ban req.url == /delta"
varnish v1 -expect
n_ban
_gone == 1
varnish v1 -expect
bans
_gone == 1
varnish v1 -cliok "ban obj.http.foo == /gamma"
# Dup-check should have added one
varnish v1 -expect
n_ban
_gone == 2
varnish v1 -expect
bans
_gone == 2
varnish v1 -cliok "ban req.url == /epsilon"
varnish v1 -cliok "ban.list"
varnish v1 -expect
n_ban
== 7
varnish v1 -expect
n_ban
_gone == 2
varnish v1 -expect
bans
== 7
varnish v1 -expect
bans
_gone == 2
varnish v1 -cliok "param.set ban_lurker_sleep .01"
delay 1
varnish v1 -cliok "param.set ban_lurker_sleep .00"
varnish v1 -cliok "ban.list"
varnish v1 -expect
n_ban
== 7
varnish v1 -expect
n_ban
_gone == 4
varnish v1 -expect
bans
== 7
varnish v1 -expect
bans
_gone == 4
client c1 {
txreq -url "/alpha"
...
...
@@ -108,7 +108,7 @@ client c1 {
delay 1
varnish v1 -cliok "ban.list"
varnish v1 -expect
n_ban
== 4
varnish v1 -expect
bans
== 4
client c1 {
txreq -url "/beta"
...
...
@@ -127,5 +127,7 @@ client c1 {
delay 1
varnish v1 -cliok "ban.list"
varnish v1 -expect n_ban == 1
varnish v1 -expect n_ban_gone == 0
varnish v1 -expect bans == 1
varnish v1 -expect bans_gone == 0
varnish v1 -expect bans_added == 7
varnish v1 -expect bans_deleted == 6
bin/varnishtest/tests/p00002.vtc
View file @
a2dbc597
...
...
@@ -36,4 +36,4 @@ varnish v1 -start
varnish v1 -cliok ban.list
# Count of 3 here, because two "magic" bans are also there"
varnish v1 -expect
n_ban
== 3
varnish v1 -expect
bans
== 3
bin/varnishtest/tests/r00917.vtc
View file @
a2dbc597
...
...
@@ -21,4 +21,4 @@ foo
varnish v1 -cliok ban.list
varnish v1 -expect
n_ban_ad
d == 2
varnish v1 -expect
bans_adde
d == 2
bin/varnishtest/tests/r01030.vtc
View file @
a2dbc597
...
...
@@ -26,7 +26,7 @@ varnish v1 -vcl+backend {
} -start
varnish v1 -cliok "param.set ban_lurker_sleep 0.01"
varnish v1 -expect
n_ban_obj_test
== 0
varnish v1 -expect
bans_tests_tested
== 0
delay 0.01
client c1 {
...
...
@@ -40,10 +40,10 @@ client c1 {
} -run
delay 0.1
varnish v1 -expect
n_ban_obj_test
== 0
varnish v1 -expect
bans_tests_tested
== 0
delay 1.0
varnish v1 -expect
n_ban_obj_test
== 1
varnish v1 -expect
bans_tests_tested
== 1
varnish v1 -cliok "param.set ban_lurker_sleep 5.01"
...
...
@@ -58,7 +58,7 @@ client c2 {
} -run
delay 0.1
varnish v1 -expect
n_ban_obj_test
== 1
varnish v1 -expect
bans_tests_tested
== 1
delay 1.1
varnish v1 -expect
n_ban_obj_test
== 2
varnish v1 -expect
bans_tests_tested
== 2
include/tbl/vsc_fields.h
View file @
a2dbc597
...
...
@@ -41,6 +41,10 @@
* e - Explantion: Short explanation of field (for screen use)
* d - Description: Long explanation of field (for doc use)
*
* Please describe Gauge variables as "Number of..." to indicate that
* this is a snapshot, and Counter variables as "Count of" to indicate
* accumulative count.
*
* -----------------------
* NB: Cleanup in progress
* -----------------------
...
...
@@ -297,13 +301,49 @@ VSC_F(n_vcl, uint64_t, 0, 'a', "N vcl total", "")
VSC_F
(
n_vcl_avail
,
uint64_t
,
0
,
'a'
,
"N vcl available"
,
""
)
VSC_F
(
n_vcl_discard
,
uint64_t
,
0
,
'a'
,
"N vcl discarded"
,
""
)
VSC_F
(
n_ban
,
uint64_t
,
0
,
'i'
,
"N total active bans"
,
""
)
VSC_F
(
n_ban_gone
,
uint64_t
,
0
,
'i'
,
"N total gone bans"
,
""
)
VSC_F
(
n_ban_add
,
uint64_t
,
0
,
'a'
,
"N new bans added"
,
""
)
VSC_F
(
n_ban_retire
,
uint64_t
,
0
,
'a'
,
"N old bans deleted"
,
""
)
VSC_F
(
n_ban_obj_test
,
uint64_t
,
0
,
'a'
,
"N objects tested"
,
""
)
VSC_F
(
n_ban_re_test
,
uint64_t
,
0
,
'a'
,
"N regexps tested against"
,
""
)
VSC_F
(
n_ban_dups
,
uint64_t
,
0
,
'a'
,
"N duplicate bans removed"
,
""
)
/**********************************************************************/
VSC_F
(
bans
,
uint64_t
,
0
,
'g'
,
"Count of bans"
,
"Number of all bans in system, including bans superseded"
" by newer bans and bans already checked by the ban-lurker."
)
VSC_F
(
bans_gone
,
uint64_t
,
0
,
'g'
,
"Number of bans marked 'gone'"
,
"Number of bans which are no longer active, either because they"
" got checked by the ban-lurker or superseded by newer identical bans."
)
VSC_F
(
bans_req
,
uint64_t
,
0
,
'g'
,
"Number of bans using req.*"
,
"Number of bans which use req.* variables. These bans can not"
" be washed by the ban-lurker."
)
VSC_F
(
bans_added
,
uint64_t
,
0
,
'c'
,
"Bans added"
,
"Counter of bans added to ban list."
)
VSC_F
(
bans_deleted
,
uint64_t
,
0
,
'c'
,
"Bans deleted"
,
"Counter of bans deleted from ban list."
)
VSC_F
(
bans_tested
,
uint64_t
,
0
,
'c'
,
"Bans tested against objects"
,
"Count of how many bans and objects have been tested against"
" each other."
)
VSC_F
(
bans_tests_tested
,
uint64_t
,
0
,
'c'
,
"Ban tests tested against objects"
,
"Count of how many tests and objects have been tested against"
" each other. 'ban req.url == foo && req.http.host == bar'"
" counts as one in 'bans_tested' and as two in 'bans_tests_tested'"
)
VSC_F
(
bans_dups
,
uint64_t
,
0
,
'c'
,
"Bans superseded by other bans"
,
"Count of bans replaced by later identical bans."
)
/**********************************************************************/
VSC_F
(
hcb_nolock
,
uint64_t
,
0
,
'a'
,
"HCB Lookups without lock"
,
""
)
VSC_F
(
hcb_lock
,
uint64_t
,
0
,
'a'
,
"HCB Lookups with lock"
,
""
)
...
...
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