如何监控varnishd中的活动线程?

问题描述 投票:0回答:1

如何监控生产中 varnishd 中运行的线程?

我们已将 varnishd 配置为最大线程 = 最小线程 = 1000。

我们正在监控 MAIN.threads 和 MAIN.threads_created 指标,但据我所知,这些指标并没有说明哪些线程正在主动运行或在池中。

我确实使用“varnishscoreboard”找到了我正在寻找的信息。

线程池中运行/运行的线程数:2/21 等待/队列中的任务:0/0

,我想我可以间隔运行 varnishscoreboard 并 grep 获取我感兴趣的信息,但是还有其他选择吗?

提前感谢您的回复。

varnish
1个回答
0
投票

MAIN.threads
中的
varnishstat
指标是您应该监控的指标。该指标返回活动指标。

您可以通过

thread_pools
检索的
sudo varnishadm param.show thread_pools
运行时参数定义了这些线程所在的线程池的数量。默认值为 2,没有理由每次都更改此值。

thread_pool_min
运行时参数返回将创建的最小线程数。当然,
thread_pool_max
值定义了上限。

如果您的

thread_pool_min
值设置为 500,知道有 2 个线程池,那么您的
MAIN.threads
值设置为 1000 是有意义的。

如果

MAIN.threads_limited
计数器增加,则表示最大线程值已达到 x 次。

MAIN.thread_queue_len
的值是排队等待新线程的会话数。这也意味着无法创建新线程。

varnishscoreboard
可以更好地了解每个线程正在做什么,但此工具是Varnish Enterprise解决方案套件的一部分。

长话短说:

  • 了解每个池的最小和最大线程值
  • 假设有2个线程池
  • 使用
    MAIN.threads
    查看当前正在使用的线程数
  • 使用其他与线程相关的计数器来识别潜在的线程短缺
  • 使用此信息正确调整
    thread_pools_min
    thread_pool_max

创建线程是资源密集型的,在线程池中拥有适量的线程等待将使您的 Varnish 服务器响应更快。不要将

thead_pools_min
设置得太低。另请注意,每个线程也会消耗一些内存,将值设置得太高可能会消耗系统中不必要的 RAM。

© www.soinside.com 2019 - 2024. All rights reserved.