如何在Glassfish中跟踪/监控打开/关闭的JMS连接?

时间:2012-10-16 09:54:39

标签: glassfish profiling jms monitoring

我目前在Glassfish上部署了一个JavaEE应用程序,我已经编写了一个负载测试,在不到一个小时的时间内(现在 - 崩溃的速度改进即将到来)耗尽JMS连接池并打破Glassfish疯狂的消息

  

正在使用的连接等于max-pool-size和expired max-wait-time。无法分配更多连接。

我想看看哪些JavaEE组件泄漏了JMS连接。对于内存,我可以使用分析器,我也可以将它用于JDBC连接。但是,跟踪打开/关闭的JMS连接以及创建它们但不释放它们的组件的最佳工具是什么?

2 个答案:

答案 0 :(得分:4)

尝试使用 imqcmd 工具来监控您的JMS目标。它提供了基本但有用的命令(list,purge,create ...)

它位于$GLASSFISH_HOME/mq/bin

尝试以下命令:

  • 列出所有JMS目的地
./imqcmd list dst
  • 打印经纪人信息
./imqcmd query brk
  • 显示统计信息(我想这正是您要找的)。默认情况下,统计信息每5秒刷新一次
./imqcmd metrics dst -t q -n jms/myQueue -m rts

-m rts代表“消息率”。有关其他指标信息(./imqcmd -h ;-))

,请参阅documentation

注意:每个命令都会提示用户名和密码。 admin / admin是默认的用户名/密码(!= asadmin凭证)

答案 1 :(得分:0)

在Glassfish 3.1控制台中,您可以检查JMS物理目标统计信息。这是在服务器 - > JMS物理目的地选项卡 - >单击View Statistics(您可以复制链接并刷新此页面以获取最新结果,例如当时队列和内存中的消息数)

此外,我认为监视JMS队列的最佳方法是在类中插入一些日志信息,以控制谁生成或使用消息(并知道谁正在打开/关闭连接)。