记录 Jboss 连接池数量

记录 Jboss 连接池数量

我有一个 jboss-4.2.3.GA 安装,我怀疑线程池可能会随着时间的推移而增加,因为线程没有被正确释放。当达到 maxthreads 时,我没有收到任何消息,所以我想每五分钟将正在使用的线程数记录到一个文件中,以便我可以验证这个假设。有人能建议如何做到这一点吗?

答案1

我知道这是一个老问题,但有人可能会觉得这很有趣。我遇到过类似的问题,我想监控 jboss 连接池与数据库的连接。我所做的就是创建一个小的 shell 脚本,每隔一分钟用它curl从 JBoss jmx-console 获取相关页面。

我最终在我的bash脚本中使用了类似的东西。

# Pools to check
POOLS="DefaultDS QuartzDS"

# Loop thru the pools and collect stats.
for pool in $POOLS;
do
    # Construct the URL
    url=http://localhost:8080/jmx-console/HtmlAdaptor?action=inspectMBean\&name=jboss.jca:service=ManagedConnectionPool,name=$pool
    # Use 'curl' to fetch the web page, and awk to parse the output and put all rows with 'count' in them in a temp file.
    curl $url | awk 'BEGIN{RS="<td>MBean"}/Count/{print $0}' > _tmp_PoolStat.txt
    echo "Processing $pool"

    <process data in tmp file using your favourite tool.>
done

在你的情况下,你需要修改url以匹配你正在寻找的内容。由于我使用基于 *nix 的操作系统,我最终使用watch它以固定间隔执行此脚本。

答案2

您可以使用 JMX 从 java 获取线程数。使用插件 jmx4perl,您可以从非常基本的 perl 脚本执行 JMX 调用。还有一个插件用于 Nagios 与 j4p 集成,以警告和监控各种参数。

http://blog.techstacks.com/2009/09/tomcat-management-jmx4perl-makes-it-easier.html有几个很好的例子。

相关内容