【问题标题】:How to restrict how many CPU cores Varnish uses?如何限制 Varnish 使用多少 CPU 内核?
【发布时间】:2017-01-25 14:54:42
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

    标签: varnish varnish-4


    【解决方案1】:

    据我所知,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 或容器化 Varnish(或虚拟化系统,但我假设这不在桌面上)。如果taskset 选项对您不起作用,或者如果您没有在 Linux 上运行,请使用其他信息更新您的问题。

    【讨论】:

      猜你喜欢
      • 2022-09-18
      • 2019-06-24
      • 2017-08-30
      • 2016-04-17
      • 2022-08-15
      • 2019-01-04
      • 2013-04-01
      • 2016-08-19
      • 1970-01-01
      相关资源
      最近更新 更多