如何监控生产中 varnishd 中运行的线程?
我们已将 varnishd 配置为最大线程 = 最小线程 = 1000。
我们正在监控 MAIN.threads 和 MAIN.threads_created 指标,但据我所知,这些指标并没有说明哪些线程正在主动运行或在池中。
我确实使用“varnishscoreboard”找到了我正在寻找的信息。
线程池中运行/运行的线程数:2/21 等待/队列中的任务:0/0
,我想我可以间隔运行 varnishscoreboard 并 grep 获取我感兴趣的信息,但是还有其他选择吗?
提前感谢您的回复。
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解决方案套件的一部分。
长话短说:
MAIN.threads
查看当前正在使用的线程数thread_pools_min
和 thread_pool_max
值创建线程是资源密集型的,在线程池中拥有适量的线程等待将使您的 Varnish 服务器响应更快。不要将
thead_pools_min
设置得太低。另请注意,每个线程也会消耗一些内存,将值设置得太高可能会消耗系统中不必要的 RAM。