故障
问题1、公司在一段时间稳定以后,把原来的Nagios监控全部替换为了Zabbix监控,但是出现了Zabbix Server端Zabbix服务启动不起来的问题,或者启动了一小会就自动停止了
是因为新增加了许多Zabbix Agent 端,导致mysql 数据库超过了预设的最大连接数,修改mysql数据库的最大连接数即可解决。如下:
问题2、在部署了Zabbix一段时间后,发现Zabbix Server Web 界面很卡,而且偶尔会出现502返回码,偶尔会出现监控图像断裂,断点问题
解决:这是因为原来配置的Zabbix 监控为Zabbix Agent被动模式;Zabbix Server主动拿取数据会给服务器造成很大的压力,应该调整Zabbix Agent端为主动模式来解决这一问题
Zabbix Server 配置文件修改
Zabbix Agent 配置文件修改
Web 界面修改
成功解决问题
问题3、生产环境下Tomcat刚发布正常,但是运行一段时间后CPU占用很高,而且越来越高,可能会宕机,请排查原因(这也是企业案例之一:Linux下java/http进程高(占用CPU高))
问题分析:
1>程序密集频繁调用CPU,联系开发排错情况
2>程序代码出现死循环
优化排查:
1> top -H(按CPU占用进行排序)
扩展:查看load average的四种方式:w、uptime、top、cat /proc/loadavg
2> strace -p +pid号,查看占用CPU或mem 高的进程所有线程调用情况
扩展:如何查看进程中的线程状态 ps -T -p +进程PID号
3> 使用 jstack,找出高占用线程调用的开发代码,交给开发处理优化
注:只要安装了 jdk 就有 jstack这个命令,用于查看指定 pid 进程的java 堆栈信息,过滤进程里面的线程号是用16进制表示的(内存中都是16进制显示)