WEB开发网
开发学院操作系统Linux/Unix IBM WebSphere Application Server诊断和调优(二... 阅读

IBM WebSphere Application Server诊断和调优(二)

 2010-09-27 08:17:54 来源:WEB开发网   
核心提示: 2、按应用程序引起内存泄漏诊断:用JProfiler等工具探测:因为总是发生OOM,3、分离WAS怀疑有OOM的应用:因为每个WAS应用太多,IBM WebSphere Application Server诊断和调优(二)(2),20来个,混一起没法定位,所以原因一般都不同,容易定位难度也不一样

2、按应用程序引起内存泄漏诊断:用JProfiler等工具探测:因为总是发生OOM。

3、分离WAS怀疑有OOM的应用:因为每个WAS应用太多,20来个,混一起没法定位。

4、用IBM官方heap、GC分析工具。以及和IBM技术支持联系。WAS、AIX参数优化。

5、隔离出WAS超级恶魔程序:一个CMS产品。

6、WAS、AIX参数优化、设置。

我们走到第5步时,才出现效果。计算一下,那时已经过去一个月了。服务器宕机、系统不稳定,在这个验收的时候,客户已经忍无可忍,以致后来的每一次行动都得胆战心惊得去做。

一、按Job调度线程池导致内存泄漏诊断

因为从我们WAS的日志(默认是native_stderr.log)来看,最近半年的宕机时间都有一个明显时间规律。见附件截图Job1-1.png。

我想,做过Java服务器性能调优的朋友,都知道在Web容器里面启线程池是个不太好的做法,因为Web容器本身有一个线程池,譬如Servlet线程池(Tomcat默认起25个),而自启的线程池很容易导致Servlet线程管理混乱,最终导致GC问题。我们的现象似乎和那很符合。如果我们沿着这个思路做下去,具体怎样实施呢?

我们的WAS上部署了20个左右的Web应用,譬如Lucene全文检索、B2B行业数据同步等,都是通过Quartz的Job调度做的,当然还有很多其它调度。当时,由我负责,通知相关负责人,将定时调度暂时去掉。观察了几天,后来发现问题依然存在,不过时间有点随机了。

不过,最后还是发现OOM不是由Job调度引起的。

也就是说,我们这个方案是失败的。而且,我们的很多想法都是臆测的,没有可靠的根据,也没有方向,再加上我是第一次处理这种问题,这导致后来查找问题的艰难。但是,仔细想想,我们又能拿什么做依据呢?出现OOM错误,我想大多数人想到的,除了JVM参数设置,就是内存泄漏。其实,OOM发生有很多种情况,在IBM、Sun、BEA等不同虚拟机上,因为GC机制不一样,所以原因一般都不同,容易定位难度也不一样。下文会谈到。

编缉推荐阅读以下文章

  • 设置并置 WebSphere Application Server 负载均衡器和内容主机
  • 利用 WebSphere Application Server 6.1 构建 SIP 集群应用环境及其性能调优
  • 如何实现WebSphere Application Server 6集群环境下的定时服务
  • WebSphere Application Server对SIP的支持
  • IBM WebSphere Application Server诊断和调优(一)
  • WebSphere Application Server Web 2.0 功能部件包入门

上一页  1 2 3 4 5 6 7  下一页

Tags:IBM WebSphere Application

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接