5

我有一个当前部署在 Glassfish 上的 JavaEE 应用程序,我为此编写了一个负载测试,它可以在不到一小时的时间内(目前 - 崩溃的速度改进即将到来)耗尽 JMS 连接池并用非常糟糕的消息破坏 Glassfish

使用中的连接等于 max-pool-size 和过期的 max-wait-time。无法分配更多连接。

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

4

2 回答 2

4

尝试使用imqcmd工具来监控您的 JMS 目标。它提供基本但有用的命令(列表、清除、创建...)

它位于$GLASSFISH_HOME/mq/bin

尝试以下命令:

  • 列出所有 JMS 目的地
./imqcmd 列表 dst
  • 打印经纪人信息
./imqcmd 查询 brk
  • 显示统计信息(我想这就是您要查找的内容)。统计信息默认每 5 秒刷新一次
./imqcmd 指标 dst -tq -n jms/myQueue -m rts

-m rts代表“消息费率”。有关其他指标信息,请参阅文档(./imqcmd -h ;-))

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

于 2012-10-16T13:31:30.293 回答
0

在 Glassfish 3.1 控制台中,您可以检查 JMS 物理目标统计信息。这是在 Server -> JMS Physical Destinations Tab -> Click on View Statistics (您可以复制链接并刷新此页面以获取最新结果,例如当时队列中的消息数和内存)

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

于 2012-10-16T10:12:06.923 回答