为什么varnish不考虑malloc限制?

时间:2013-05-22 13:54:38

标签: varnish

我使用 -s malloc,25G 运行清漆,但是该进程一直在增长,直到它占用所有服务器内存并崩溃,重新启动缓存。

知道我可以检查什么是错的吗?

服务器有16个内核,32 GB内存 我正在使用清漆3。

  

28346? Ss 0:16 / usr / sbin / varnishd -P /var/run/varnishd.pid -a:9290 -T localhost:6082 -f /etc/varnish/default.vcl -s malloc,25G -p thread_pools 16 -p thread_pool_min 160 -p thread_pool_max 16000 -p thread_pool_add_delay 2

Memory

Close up

2 个答案:

答案 0 :(得分:8)

-s malloc,25G only limits the cache size,而不是varnishd进程的大小。

  

请务必记住,使用-s参数指定的大小是实际缓存的大小。 Varnish在此基础上有一个开销用于跟踪缓存,因此 Varnish的实际内存占用量将超过'-s'参数指定缓存是否已满。当前的估计(根据个别Varnish版本的变化而定)是每个对象所需的大约1kB的开销。对于100万个对象,这意味着额外的内存使用量为1GB。

如果您有一个大缓存,file后端可能更合适。

答案 1 :(得分:1)

文档是正确的,但由于内存碎片问题更严重。为了安全起见,您应该允许为malloc装卸工具配置的尺寸的1.5倍到2倍