你可先总结下目前的情况,收集可以收集的日志信息,通过分析日志应该可以将问题范围缩小,再进一步定位问题点吧。 可参考以下几点分析:1、 既然问题表现是宕机的话,又备有前提条件(系统已稳定运行一段时间无异常;近期业务量变大) 可先从业务方...
显示全部
你可先总结下目前的情况,收集可以收集的日志信息,通过分析日志应该可以将问题范围缩小,再进一步定位问题点吧。
可参考以下几点分析:
1、 既然问题表现是宕机的话,又备有前提条件(系统已稳定运行一段时间无异常;近期业务量变大)
可先从业务方面和应用代码管理方面确认
应用程序和数据结构近期是否有变化(确认新增代码的改动是否有影响)
业务量增大,主要是什么业务加大,用户会频繁使用什么场景,或者业务在触发该场景前,系统还需要进行什么样的操作(根据业务功能点,缩小问题范围,可针对性的检查或者进行一轮压力测试,任务可交给测试部分协助)
2、系统宕机,信息收集与分析
a、宕机后,系统是否可自动恢复,宕机时,所有功能是否都不可访问
b、宕机后,服务器内存,cpu使用情况
c、宕机后,系统日志部分信息,可检查SystemOut.log,和SystemErr.log
d、宕机如是因为堆泄漏的话,会有heapdump文件,可根据文件分析溢出内容,查看是否因为业务量增大,使得堆空间大小不能满足,可调整大小(这里和服务器和业务和设计有关,可找开发人员一起讨论下,详细检查下缓存与临时对象的使用率)
e、把详细垃圾回收打开,查看垃圾回收的频度,与空间分配率
3、数据库角度分析
1、既然有经验分析是事务问题,可在数据库端检查,数据库事务使用情况,查看事务锁和表锁情况,一般was线程挂起,都是因为资源等待时间过长导致的,业务系统上,最多的操作就是数据库操作,牵涉到太多的设计问题,因此,这里可以考虑从数据库端入手,如数据库日志分析,或者运行时情况分析。
2、让开发根据业务功能点评审代码,检查业务逻辑,检查相关sql,或者存储过程,确认在大并发请求下,是否会出现多个请求多个线程资源争夺情况,如是是这样就要考虑逻辑优化了。
以上是部分个人建议,您除了收集信息外,也可在公司内部寻找资源一起探讨,说不定开发人员那里的直觉也是个不错的建议。
工具方面,可以考虑用ibm的isa吧。也可到监控优化板块去看下一些其他资料。
收起