代码之家  ›  专栏  ›  技术社区  ›  Ichorus

是否可以通过JMX使JBoss中的单个会话失效?

  •  4
  • Ichorus  · 技术社区  · 15 年前

    我们正在跟踪应用程序中的一些内存问题,并且可以看到问题所在会话的大小。它只会影响某些会话,在这些会话中,它们似乎失控了,我们希望能够或多或少地“手动”使这些会话失效,以恢复内存。有没有办法通过JMX来做到这一点?我们使用的是JBoss4.5.2。

    事先谢谢。

    2 回复  |  直到 12 年前
        1
  •  7
  •   Ichorus    15 年前

    答案是肯定的,你可以。

    --这将使Web模块MBeans加载到JBoss中--

    /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-->

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

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

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

    此外,您还可以将/opt/lib/jboss-4.2.3.ga/bin/twiddle.sh替换为计算机上的twiddle位置。它包含在JBoss中。

        2
  •  0
  •   Sudheer    14 年前

    谢谢你。您的解决方案至少帮助我在任何给定时间查看服务器上的所有活动会话。

    顺便说一句,在运行twiddle.sh之前,这里有两件事需要做。 确保在环境中设置了java_home和jboss_home 并确保jboss_classpath未设置或具有twidle.sh.i.e jboss_home \client\jboss all client.jar;jboss_home \client\getopt.jar;jboss_home \client\log4j.jar;jboss_home \lib jboss-jmx.jar中给出的所有lib

    另外,您可能会遇到ClassNotFound异常

    苏德希尔