我目前在Glassfish上部署了一个JavaEE应用程序,我已经编写了一个负载测试,在不到一个小时的时间内(现在 - 崩溃的速度改进即将到来)耗尽JMS连接池并打破Glassfish疯狂的消息
正在使用的连接等于max-pool-size和expired max-wait-time。无法分配更多连接。
我想看看哪些JavaEE组件泄漏了JMS连接。对于内存,我可以使用分析器,我也可以将它用于JDBC连接。但是,跟踪打开/关闭的JMS连接以及创建它们但不释放它们的组件的最佳工具是什么?
答案 0 :(得分:4)
尝试使用 imqcmd 工具来监控您的JMS目标。它提供了基本但有用的命令(list,purge,create ...)
它位于$GLASSFISH_HOME/mq/bin
尝试以下命令:
./imqcmd list dst
./imqcmd query brk
./imqcmd metrics dst -t q -n jms/myQueue -m rts
-m rts
代表“消息率”。有关其他指标信息(./imqcmd -h ;-))
注意:每个命令都会提示用户名和密码。 admin / admin是默认的用户名/密码(!= asadmin凭证)
答案 1 :(得分:0)
在Glassfish 3.1控制台中,您可以检查JMS物理目标统计信息。这是在服务器 - > JMS物理目的地选项卡 - >单击View Statistics(您可以复制链接并刷新此页面以获取最新结果,例如当时队列和内存中的消息数)
此外,我认为监视JMS队列的最佳方法是在类中插入一些日志信息,以控制谁生成或使用消息(并知道谁正在打开/关闭连接)。