2016-09-17 39 views
0

我有一個8核心服務器,它將在同一臺機器上運行HTTP服務器前的Varnish。如何限制Varnish使用的CPU內核數量?

如何限制清漆使用不超過4個核心?

我已閱讀文檔中的工人池,但它也這樣說:

「雖然光油線程模型允許你使用多個線程池,我們建議您不要修改此參數,根據我們的。經驗和測試,我們已經看到2個線程池就足夠了,換句話說,當添加2個以上的池時,Varnish的性能不會增加

注意如果您運行的調優建議表明有一個線程我們建議最多有2個線程池,但是你可以增加每個池的線程數。「

所以看來2個線程池就足夠了。這是否意味着在這種情況下只使用兩個CPU核心?

通過文檔搜索到目前爲止還沒有找到明確的答案。

回答

0

據我所知,Varnish沒有內置的方法來限制它運行的內核數量。您需要操作流程在操作系統級別的運行方式。假設你在Linux上,最簡單的方法是修改啓動命令,使用taskset將進程固定到指定的內核或內核範圍。例如,在服務單元控制裝置:

# /etc/systemd/system/varnish.service.d/override.conf 
ExecStart= 
ExecStart=/usr/bin/taskset -c 4-7 /usr/sbin/varnishd \ 
    -j unix,user=vcache -F -a :6081 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m 

這將限制varnishd過程的第五,第六,第七和八個核。如果你啓用了超線程,它會變得有點棘手;你的八個物理內核將呈現爲16個邏輯內核,「真實」內核與「虛擬」交織在一起。在這種情況下,您可以嘗試taskset -c 8,10,12,14taskset -c 9,11,13,15,或者如果您不關心將光油限制爲物理核心,taskset -c 8-15

您的其他選項包括設置cgroup或集裝箱清漆(或虛擬化系統,但我假設這不在桌面上)。如果taskset選項不適用於您,或者您沒有在Linux上運行,請使用其他信息更新您的問題。