这是否可能/推荐?
我们正在尝试设置几个以 1 秒为间隔配置的活动项目。但是这些项目没有保持所需的间隔,而是每隔约 30 秒收集一个值(如相应的图表所示)。
在客户端使用简单的“echo 1”作为用户参数测试上述内容,该参数应每 1 秒发送一次,不会延迟,但事实并非如此。我们在服务器上部署了一个客户端,其项目配置方式与上述相同,该客户端每秒成功收集一次。
我们的 Zabbix 设置相对较新,因此底层 MySQL DB 相当小,而且我们没有那么多客户端/项目。服务器在 Linux VM 中运行,客户端在专用 Linux 主机上运行(不在本地网络上)。
我们查看了服务器/客户端上的配置文件,但没有发现有什么方法可以帮助我们实现这一点(除了添加更多捕获器)。这似乎不是连接问题,因为客户端缓冲区应该可以解决这个问题。
- 这种行为的原因是什么?
- 如何找到瓶颈?Zabbix 服务器统计?
- 硬件是最重要的因素吗?
- 是MySQL 优化强制的 ?
无法发布更多链接,因此我们查看了以下内容:
- 性能调优页面中的Zabbix 参考手册
- Alexei Vladishev zabbix 性能调优幻灯片(可在 Slideshare 上找到)
答案1
谢谢@Richlv经过我进行的一些测试(见评论),我们发现了这个问题。因为活动项目按顺序处理并且这些项目背后的命令可能需要一点时间才能返回,因此生成有些延迟堆积对于每一件物品,代理都会尽力循环遍历所有物品。
由于不可能并行处理活动项目,这种情况下可能的解决方案如下:
- 增加活动项目的时间间隔
- 使用zabbix_sender手动完成工作(可能还需要实现与活动项目一起提供的客户端缓冲区)
- 也许另一种方法是使用日志文件监控
- 在同一个客户端上运行 2 个代理,从而建立并行进程,明智地传播活动项目(虽然不是一个很好的解决方案)
- 提高活动项目背后命令的性能和/或减少最坏情况的时间(例如超时)- 我们做了什么