如何限制Varnish使用的CPU核心数量?

时间:2016-09-17 13:29:54

标签: varnish varnish-4

我有一个8核服务器,它将在HTTP服务器前运行Varnish,两者都在同一台机器上。

如何限制Varnish使用不超过4个核心?

我已经阅读了文档中的工作池,但它也说明了这一点:

“虽然Varnish线程模型允许您使用多个线程池,但我们建议您不要修改此参数。根据我们的经验和测试,我们已经看到2个线程池就足够了。换句话说,性能添加2个以上的池时,清漆不会增加。

注意如果您遇到建议每个CPU核心都有一个线程池的调优建议,请放心这是旧建议。我们建议最多使用2个线程池,但是您可以增加每个池的线程数。“

所以似乎2个线程池就足够了。这是否意味着在这种情况下只使用两个CPU内核?

通过文档搜索我到目前为止还没有找到明确的答案。

1 个答案:

答案 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,14taskset -c 9,11,13,15,或者如果您不关心将Varnish限制为物理核心,taskset -c 8-15

您的其他选项包括设置cgroup或容纳清漆(或虚拟化系统,但我假设不在桌面上)。如果taskset选项不适合您,或者您未在Linux上运行,请使用其他信息更新您的问题。