我有一个8核的服务器,它将在HTTP服务器前面运行Varnish,两者都在同一台机器上。
如何将Varnish限制为使用不超过4个内核?
我在文档中读到过worker池,但它也是这样写的:
“虽然Varnish线程模型允许您使用多个线程池,但我们建议您不要修改此参数。根据我们的经验和测试,我们已经看到2个线程池就足够了。也就是说,当添加超过2个线程池时,Varnish的性能不会提高。
注如果您遇到了建议每个CPU核心有一个线程池的调优建议,请放心,这是旧的建议。我们建议最多有2个线程池,但您可以增加每个池的线程数。“
所以看起来2个线程池就足够了。这是否意味着在这种情况下只使用两个CPU核心?
通过搜索文档,我到目前为止还没有找到明确的答案。
发布于 2016-09-20 04:30:56
据我所知,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进程限制在第五个、第六个、第七个和第八个内核。如果您启用了超线程,情况就会变得有点棘手;您的8个物理核心将显示为16个逻辑核心,其中“真实”核心与“虚拟”核心交织在一起。在这种情况下,您可以尝试taskset -c 8,10,12,14或taskset -c 9,11,13,15,或者如果您不关心是否将Varnish限制为物理核心,则可以使用taskset -c 8-15。
您的其他选择包括设置cgroup或容器化Varnish (或虚拟化系统,但我假设这不在考虑之列)。如果taskset选项对您无效,或者如果您没有在Linux上运行,请使用其他信息更新您的问题。
https://stackoverflow.com/questions/39547387
复制相似问题