2013-05-22 32 views
5

我用-s malloc,25G運行清漆,但該進程不斷增長,直到它消耗所有服務器內存並崩潰,重新啓動緩存。爲什麼清漆不考慮malloc限制?

任何想法我可以檢查,看看有什麼不對?

該服務器有16個內核和32 GB的RAM。
我正在使用清漆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

回答

7

varnishd過程的-s malloc,25Gonly limits the cache size,而不是大小。

請務必記住,使用-s參數指定的大小是實際高速緩存的大小。 Varnish在此之上有一個額外開銷,用於跟蹤緩存,所以Varnish的實際內存佔用量將超過'-s'參數指定緩存是否已滿的情況。目前的估計(可根據個別版本變化)是每個物體需要大約1kB的開銷。對於1百萬個對象,這意味着1GB的額外內存使用量。

如果你有一個大的緩存,file後端可能是可取的。

1

該文檔是正確的,但由於內存碎片導致問題更加嚴重。爲了安全起見,您應該允許爲配置爲malloc stevedore的尺寸的1.5倍到2x的尺寸