我有一台 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