在AIX 5.3上的JBoss 5

我是AIX和系统监控的新手。 实际上,我们的应用程序目前在AIX 5.3中运行jboss 5.1上的生产。 请检查下面的configuration和系统设置。

  1. AIX系统configuration
    • OS级别5.3.9.0( oslevel -g
    • 物理内存大小24GB( svmon -G
    • 页面空间4GB( lsps -s
    • 处理器3核,处理器types:PowerPC_POWER6,处理器时钟速度:4704 MHz( prtconf | grep Processor
  2. Java版本
    • JRE 1.6.0 IBM AIX build pap6460sr10fp1-20120321_01(SR10 FP1)( java -fullversion
  3. JBossconfiguration
    • JBoss 5.1 / JBoss ESB 4.11
    • 与消费者stream量控制的 Hornetq消息
    • java opts: -d64 -Xms2g -Xmx4g -XX:MaxPermSize=1024m

有时候,我们在JBoss中观察到非常奇怪的行为,没有任何错误日志。 另外服务器日志停止没有任何进一步跟踪 我们也无法获得线程转储( kill -3 ),而不是在那个时候生成。 ( kill -3 xxxxx在正常情况下工作)只有我们可用的选项是重新启动jboss服务器,它似乎在重启后冻结时间过程中队列中的所有消息。

我们尝试调整JBoss hornetq中的一些设置,虽然问题在那里。 Hornetq被默认停留 。 但是我们没有任何运气,也无法从任何angular度来分析这个问题。 我们看着像nmon这样的工具来监控这个,但是没有线索足够好。

请提供一些意见来调查这个问题。

谢谢

1.检查完整的coredumps

您需要检查AIX上是否激活了fullcore:

 lsattr -Elsys0 | grep full 

要启用fullcore:

 chdev -l sys0 -a fullcore=true 

2.检查限制

Fsize和核心限制需要设置为unlimited

 ulimit -c unlimited ulimit -f unlimited 

首先要看的是堆空间的枯竭。 通过将以下内容添加到Java选项来启用详细的垃圾收集。

-verbose:gc

手动查看输出或使用http://www.tagtraum.com/gcviewer.html进行分析。

从我记得的JDK中可以看出,JDK与Sun JDK完全不同,包括GC策略,因此在阅读JDK时需要小心。

在一个健康的应用程序,你会看到使用的堆空间增加,那么当一个完整的GC发生时,使用的空间应该显着下降。 这将在应用程序的整个生命周期中重复。

在一个不健康的应用程序中,Full GC之后的内存下降会less一些,所以随着时间的推移,使用的堆空间会慢慢攀升,直到没有更多的内存可用。 此时,由于JDK不断运行垃圾收集器来释放内存,所以JDK常常无响应。

如果发生这种情况,那么你将不得不看看你的Web应用程序。 开发人员在内存中caching对象并不罕见,但不会为对象的数量使用任何上限。

提示:-Xms设置为与-Xmx相同的大小。 从操作系统分配更多的内存以授予堆是一个昂贵的操作。 在服务器环境中,这样做没有什么意义,因为您总是希望Heap具有足够的真实内存。