Nagios 负载每 7 小时激增一次

Nagios 负载每 7 小时激增一次

我有一台 NagiosXi 服务器,监控 63 台主机上的 631 个服务。每七个小时,服务器上的负载就会激增至 20 左右,然后逐渐回落到接近 0。

没有每 7 小时运行一次的 cron 作业。

该服务器有 8 个核心和 2GB RAM。RAM 不是问题,在高峰期仍有 1GB 可用,将其增加到 4GB 也没什么区别。该服务器也在一周前迁移到新主机,没有任何变化。

我们还对 17 台受监控主机安排了停机时间,因此它们仅在周一至周五上午 6 点至下午 6 点期间受到监控,这似乎对负载峰值没有影响。

大多数检查都是在 Windows 服务器上使用 check_wmi_plus 完成的。

在负载峰值期间,我倾向于看到 5-8 个实例check_wmi_plus.pl使用 2-3% 的 CPU,并且少数 httpd 进程使用相同的 CPU,但没有一个实例使用大量 CPU。这些进程也非常快地滚动,因此它们不会挂起或花费异常长的一段时间。NagiosXi 性能监视器中的服务检查执行时间往往在 ~5.5 秒处达到峰值,平均约为 1 秒。

有人能提出可能的原因吗,或者我该如何进一步解决这个问题?

答案1

高负载并不一定意味着您正在使用高水平的 CPU,它仅提供在某个时间快照中准备运行并接收 CPU 时间的进程数量,但不提供进程的数量。

Nagios 确实会根据您设置的监控计划快速启动大量进程,有时会导致峰值,因为它会尽可能快地启动大量进程,但它们可能不需要太多的 CPU 或立即进入睡眠/等待状态。

顺便说一句,如果您在 Nagios 中禁用通知,这并不会阻止它继续监视给定的主机或服务。

答案2

这是由于内核如何计算负载。请参阅来源: https://github.com/torvalds/linux/blob/master/include/linux/sched/loadavg.h 你会得到如下结果:

#define LOAD_FREQ   (5*HZ+1)

LOAD_FREQ 是内核收集 CPU 负载的间隔。请注意,值有 0.001 秒的微小偏移。因此需要 5* 1000 *5.001 秒才能回到 5 秒的倍数。25005/3600 大约是 7 小时。

所以我敢打赌,系统会定期分叉短任务,并且每 7 小时被内核“捕获”一次。

答案3

将默认的 rhel/centos 默认 prefork 设置降低/etc/httpd/conf/httpd.conf到更现实的值。

使用 apachebuddy.pl 和 apachetuner.sh 之类的工具来计算每个进程分叉的内存。为系统上的其他进程(mysql/postgresql/php)提供更多内存,并减少 MaxClient 和 MaxRequestChild。

我从 2012R2.9 升级到 2014R1.1 后遇到了这个问题。不确定最新版本的 XI2014 是否需要更多的 Web 前端资源。

今天早上降低设置后,我注意到我的负载峰值变小了,并且在使用浏览器中的前进和后退按钮时,浏览界面不会给我带来灰色的不开心屏幕。界面中的这种怪异看起来相似吗?

我现在要看的最后一项是这个默认 httpd.conf 文件中需要哪些 rhel 模块。如果不需要,我认为加载默认模块是没有意义的。此服务器是我办公地点的 PROD 企业服务器,有数千个检查,因此它需要稳定。

更新:

跑步

\# service mysqld stop
\# sh /usr/local/nagiosxi/scripts/repair_databases.sh 
\# service mysqld start

或者通过以下方式在线优化表格

\# mysql -u root -p
mysql> use nagios;

列出你的表格

mysql> show tables;

然后

mysql> optimize table $TABLENAME;
mysql> optimize table $TABLENAME;
mysql> optimize table $TABLENAME;
...
mysql> use nagiosql;

**list your tables**

mysql> show tables;

然后

mysql> optimize table $TABLENAME;
mysql> optimize table $TABLENAME;
mysql> optimize table $TABLENAME;
...

对所有表都执行此操作。

如果您可以停止服务几分钟,那么可以通过 nagiosxi 脚本执行此操作。如果您不能等到稍后再执行...请在线执行,但预计界面会有点慢,直到查询重新运行。刷新查询缓存可能也有好处

mysql> FLUSH QUERY CACHE;

http://assets.nagios.com/downloads/nagiosxi/docs/Repairing_The_Nagios_XI_Database.pdf

相关内容