我有一个8核服务器,它将在HTTP服务器前运行Varnish,两者都在同一台机器上。
如何限制Varnish使用不超过4个核心?
我已经阅读了文档中的工作池,但它也说明了这一点:
“虽然Varnish线程模型允许您使用多个线程池,但我们建议您不要修改此参数。根据我们的经验和测试,我们已经看到2个线程池就足够了。换句话说,性能添加2个以上的池时,清漆不会增加。
注意如果您遇到建议每个CPU核心都有一个线程池的调优建议,请放心这是旧建议。我们建议最多使用2个线程池,但是您可以增加每个池的线程数。“
所以似乎2个线程池就足够了。这是否意味着在这种情况下只使用两个CPU内核?
通过文档搜索我到目前为止还没有找到明确的答案。
答案 0 :(得分: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,14
或taskset -c 9,11,13,15
,或者如果您不关心将Varnish限制为物理核心,taskset -c 8-15
。
您的其他选项包括设置cgroup或容纳清漆(或虚拟化系统,但我假设不在桌面上)。如果taskset
选项不适合您,或者您未在Linux上运行,请使用其他信息更新您的问题。