Bug#703617: htcacheclean: fails to clean expired entries
Package: apache2-utils
Version: 2.2.22-12
Severity: normal
Hi,
I noticed that my mod_disk_cache would grow and don't stop growing. It
was configured for 300M and broke 2GB. Situation did not improve when
running it manually:
# htcacheclean -t -l300M -v -p/var/cache/apache2/mod_disk_cache
Statistics:
size limit 300.0M
total size was 135.7M, total size now 135.7M
total entries was 75460, total entries now 75460
#
At this point the cache was still consuming about 2GB. Looking into the
cache I dug up an example .header file:
0000000: 0400 0000 c800 0000 4100 0000 0000 0000 ........A.......
0000010: c15e 39e0 f7d7 0400 4057 9bd4 0cd8 0400 .^9.....@W......
0000020: 529d 38e0 f7d7 0400 c15e 39e0 f7d7 0400 R.8......^9.....
The second line contains two apr_time_t (uint64 microseconds since
epoch) values. (Header format is explained in
modules/cache/cache_disk_common.h.) The first one is creation time (Fri
Mar 15 15:58:45 2013) the second one is expiration time (Sat Mar 16
16:58:45 2013). The time of running htcacheclean was about Thu Mar 21
10:00:00 2013. It clearly should have cleaned this file.
So I had a deeper look at the hierarchy. Here is a typical directory:
# ls -lA /var/cache/apache2/mod_disk_cache/d/_
total 40
drwx------ 3 www-data www-data 4096 Mar 12 09:02 @_f539kGhNQGJ_guMCww.header.vary
drwx------ 3 www-data www-data 4096 Mar 12 09:08 NQgutNqbacBdUddOpAoQ.header.vary
-rw------- 1 www-data www-data 31 Mar 20 14:10 O8QbyHhBIhMWpZOYfXrQ.header
drwx------ 3 www-data www-data 4096 Mar 20 14:10 O8QbyHhBIhMWpZOYfXrQ.header.vary
drwx------ 3 www-data www-data 4096 Mar 17 17:19 UK_qgLq66qxLoiQ@wayA.header.vary
drwx------ 3 www-data www-data 4096 Mar 1 09:50 Ubj90WYK54LyPSAfYlsw.header.vary
drwx------ 3 www-data www-data 4096 Mar 11 10:44 Z7_PZVkqnCk70Do7JECw.header.vary
drwx------ 3 www-data www-data 4096 Mar 4 06:38 __S2V0aQIdtqX5YEOvIA.header.vary
drwx------ 3 www-data www-data 4096 Mar 19 17:08 iLYj41h2@NVa3d2erhzA.header.vary
drwx------ 3 www-data www-data 4096 Feb 24 01:41 oQIspHH7JlDss@I4m1yg.header.vary
#
As you can see there are a number of expired (CacheMaxExpire = 1day)
*.header.vary directories and one which is not expired. The one that is
not expired also has a .header file. Presumably the other header files
were cleaned by htcacheclean.
I am not 100% sure that this is not a problem on my behalf, but the data
suggests otherwise at this point. Can you assist me with debugging this
issue? What steps can I try to track down this problem?
Workarounds (besides disabling mod_disk_cache) are welcome.
System information: wheezy i386
Helmut
Reply to: