阿里狼 发表于 2017-2-4 13:26:05

综合运用工具监视和排查tomcat应用问题

tomcat经常碰到偶尔无法正常响应甚至宕机重起后恢复的情况,此情况该如何监视和排查呢
总结思路如下。
  [@more@]

1 远程监控法
利用某些网站提供的免费检测网站功能,对tomcat应用进行长期自动检测,观察问题出现的频率,为排查问题搜集数据。
推荐用www.iyunv.com
提供了比较强大的监控功能,特别是服务器监控功能比较强大。此类网站国外还有很多,需要搜索。
2 本地监控法
在web服务器上 windows 利用系统自带的性能监视器perfmon进行监控;微软的process monitor也是一个很好的监控工具。
分析;linux和unix 推荐用nmon进行整体监控
通常长期数据分析,看看cpu,io,网络,内存4个主要资源的情况 其中哪个达到了瓶颈,特别要注意看曲线分布,是否存在有规律性的突变?
比如明显在每天的某一个高峰时间出现瓶颈?
使用netstat ,微软的portqry等工具监测web和db的连接池的稳定性,如出现反复的close和established的状态切换,可能是连接池实现有问题,或应用实现可能有问题不断误杀。
一个典型常见的错误就是部署了相同的多个应用互相误杀。
本地监控的另外一个有用的方法就是采用科来进行网络分析tcp链接,重连次数自动诊断,http响应分析等等
这一个步骤主要要确认瓶颈是在web服务器本身的资源上还是后台的数据库上。
3 如确认瓶颈在web服务器上,
可采用yahoo提供的yslow工具,对web的页面组件进行下载时间分析,看看主要是哪些组件下载慢? 看下web前端页面设计是否需要优化?
4 如果yslow下载速度比较快,问题仍然不能定位,问题是偶发的,也不好用yslow一直测试
可使用Lambda Probe 进行tomcat的监控 详细内容参考http://www.lambdaprobe.org/d/index.htm
特别要注意监视java内存的泄漏,线程数量的不断增长,http链接请求是否不断增长超过预期的能力。java内存的泄漏需要用专门的工具检测代码。
可使用jprofile 等剖析工具分析哪些线程,以及具体哪些函数占用cpu比较高,然后进行针对性的优化。
一个典型的案例就是后台采用sybase数据库时,由于sybase没有类似oralce的rownum机制,无法直接在数据库翻页,在java中翻页数量比较多的时候容易出现java内存 撑满(memory out)。
5 一旦cpu高问题发生,可先不重启web
可采用windbg进行绑定分析 参考如下实例
http://www.cnblogs.com/longyu/archive/2009/06/21/1507250.html
6 web 日志分析,使用AWStats之类的日志分析工具,对网站进行整体分析
参考http://www.chedong.com/tech/awstats.html
7 使用httpwatch等工具,定位瓶颈页面
参考http://www.httpwatch.com/download/
8 要注意检查tomcat配置文件是否被修改过,比如xml文件的配置不符合规范,可采用debug模式启动tomcat
以获取更多的日志分析。
页: [1]
查看完整版本: 综合运用工具监视和排查tomcat应用问题