4

我们正在追踪我们的应用程序中的一些内存问题,并且我们可以看到问题似乎存在的会话的大小。它只会影响某些会话,它们似乎膨胀失控,我们希望能够或多或少地“手动”使这些会话无效以回收该内存。有没有办法通过 JMX 做到这一点?我们正在使用 JBoss 4.5.2 。

提前致谢。

4

2 回答 2

7

答案是肯定的,你可以。

--这将获取加载到 JBoss 中的 Web 模块 MBean--

/opt/lib/jboss-4.2.3.GA/bin/twiddle.sh -s <--ServerIP-->:1099 query 'jboss.web:*' | grep "type=Manager"

--一旦你有了它,你就可以从那个 MBean 中获取活动会话--

/opt/lib/jboss-4.2.3.GA/bin/twiddle.sh -s 172.16.0.216:1099 invoke "<--MBean-->" listSessionIds

--最后,一旦你有了那个列表,你就可以挑选出感兴趣的会话并将其过期--

/opt/lib/jboss-4.2.3.GA/bin/twiddle.sh -s <--ServerIP-->:1099 invoke "<--MBean-->" expireSession <--SessionID-->

您可以将 <--ServerIP--> 替换为服务器绑定的 ip……它不必是本地的。只要您可以访问端口 1099,它就可以远程运行。

<--MBean--> 将替换为第一个查询的结果之一。

<--SessionID--> 将替换为第二个命令中的会话 ID 之一。

您也可以将 /opt/lib/jboss-4.2.3.GA/bin/twiddle.sh 替换为您机器上 twiddle 的位置。它包含在 JBoss 中。

于 2009-04-14T19:37:41.953 回答
0

谢谢伊科鲁斯。您的解决方案至少以某种方式帮助我在任何给定时间查看服务器上的所有活动会话。

顺便说一句...在运行 twiddle.sh 之前需要做一些事情 确保在环境中设置了 JAVA_HOME 和 JBOSS_HOME 并确保 JBOSS_CLASSPATH 未设置或具有 twiddle.sh.ie {JBOSS_HOME}\client 中给出的所有库\jbossall-client.jar;{JBOSS_HOME}\client\getopt.jar;{JBOSS_HOME}\client\log4j.jar; {JBOSS_HOME}\lib\jboss-jmx.jar

否则你会遇到 ClassNotFound 异常

苏迪尔

于 2010-02-05T10:59:40.737 回答