0

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

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

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

“虽然 Varnish 线程模型允许你使用多个线程池,但我们建议你不要修改这个参数。根据我们的经验和测试,我们已经看到 2 个线程池就足够了。换句话说,Varnish 的性能并没有添加超过 2 个池时增加。

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

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

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

4

1 回答 1

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

您的其他选项包括设置 cgroup 或容器化 Varnish(或虚拟化系统,但我假设这不在桌面上)。如果该taskset选项对您不起作用,或者您未在 Linux 上运行,请使用其他信息更新您的问题。

于 2016-09-19T20:30:55.900 回答