我正在一个流量相当大的网站上使用 apache 2 运行 mod_cache。
我已将 htcacheclean 设置为每 10 分钟以守护模式运行一次,以将缓存保持在 4GB。目前缓存为 15GB,似乎没有减少。当我手动调用 htcacheclean 时,它会挂起(在撰写本文时)40 分钟。
一些初步研究提出了这个问题
Apache 的 htcacheclean 无法扩展:如何驯服巨大的 Apache disk_cache?
说我应该确保 index_dir 处于打开状态,看起来确实如此
# tune2fs -l /dev/sda3 | grep dir_index
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
是否有其他设置可以打开/确保打开以帮助 htcacheclean 跟上缓存的生成?
答案1
发现这个回复http://www.gossamer-threads.com/lists/apache/users/404255
mod_disk_cache 的 Apache htcacheclean 替代品
我们将其放入我们的 cron 作业中,每天运行一次,效果很好。
它会删除 30 天内未修改的所有文件和目录。我们没有使用访问时间“-atime”来确定要删除哪些文件,因为出于性能原因,我们在文件系统上禁用了 atime。此方法的缺点是它不会将缓存大小保持在特定大小以下(htcacheclean 会这样做)。它的优点是可以保持缓存内容新鲜,速度更快,并且似乎资源消耗更少。我们发现我们的缓存大小相当稳定,大约为 2 到 4 GB(我们平均每月有 8MM 次点击),所以我们更喜欢这种方法。
root /usr/bin/find /var/httpd/proxy/* -type f -mtime +30 -exec rm -rf {} \;
请记住更改“/var/httpd/proxy/*”目录以指向缓存所在的位置。