[英]Dump leak connections in WildFly
我试图在WildFly 10.1中转储由MySQL数据源管理的泄漏连接,但找不到泄漏文件或泄漏转储。
为什么未生成leaks.txt
文件? 而且,我应该在哪里寻找文件?
我在standalone.bat
文件中注册了泄漏连接池:
"JAVA_OPTS=%JAVA_OPTS% -Dironjacamar.mcp=org.jboss.jca.core.connectionmanager.pool.mcp.LeakDumperManagedConnectionPool -Dironjacamar.leaklog=leaks.txt"
由于日志中显示,我可以确认是否在WildFly中设置了属性:
JAVA_OPTS: "-Dprogram.name=standalone.bat -Xms64M -Xmx512M -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Dironjacamar.mcp=org.jboss.jca.core.connectionmanager.pool.mcp.LeakDumperManagedConnectionPool -Dironjacamar.leaklog=leaks.txt"
之后,我在模拟应用程序中泄漏了一些连接以生成数据。 然后,我运行CLI命令刷新所有连接,并获得肯定的响应:
[standalone@localhost:9990 /] /subsystem=datasources/data-source=mysql-ds:flush-all-connection-in-pool
{"outcome" => "success"}
但是我在任何地方都找不到leaks.txt
文件。
我正在使用本文以及IronJacamar泄漏文档作为参考。
泄漏检测器池是使用ironjacamar.mcp系统属性配置的,其值为
org.jboss.jca.core.connectionmanager.pool.mcp.LeakDumperManagedConnectionPool
此配置适用于IronJacamar使用的所有连接池。
系统属性ironjacamar.leaklog可用于将泄漏转储到与日志记录设置分开的特殊文件中。
一个例子
-Dironjacamar.mcp=org.jboss.jca.core.connectionmanager.pool.mcp.LeakDumperManagedConnectionPool -Dironjacamar.leaklog=leaks.txt
在JBoss论坛中创建了线程969369 ,因此他们也可以提供帮助。
错误报告JBJCA-1360 。
在JBoss论坛中创建了线程969369 ,因此他们也可以提供帮助。
有另一种方法可以记录日志泄漏连接,但是我认为不应将其作为对此问题的最终答案。
解决方法是将JCA子系统的debug
和error
模式设置为true (似乎不需要重新启动服务器)。
/subsystem=jca/cached-connection-manager=cached-connection-manager:write-attribute(name=debug, value=true)
/subsystem=jca/cached-connection-manager=cached-connection-manager:write-attribute(name=error, value=true)
您可以检查日志,因为服务器将转储异常,指出有助于您发现泄漏的堆栈跟踪。 它不是很干净,但是它帮助我们找到了代码中的问题所在。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.