今天在总结项目活动上线时,系统多次出现down机的情况。
起初以为是tomcat内存溢出,通过命令jstat -gc xxx 1000 30查看java 进程的gc情况,发现在30秒的世界内minor gc了n次,随怀疑年轻代内存配置少了。当tomcat down的时候让输出堆内存文件,一边也启动jvisualvm工具来实时的监控内存各个线程的使用情况,发现在活动秒杀时间段内线程访问次数显著增高。
然后增加tomcat的内存,发现还是会出现down机的情况,最后通过调取查看tomcat业务日志,发现系统redis设置参数占满出现的问题。
通过查阅相关down机的情况,有一篇文章总结的比较全面:Tomcat进程意外退出的问题分析(http://ifeve.com/why-kill-2-cannot-stop-tomcat/)。