在WildFly

时间:2017-02-24 20:12:54

标签: java wildfly wildfly-10 connection-leaks ironjacamar

我正在尝试在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文件。

我使用this articleIronJacamar leak documentation作为参考。

  

使用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

1 个答案:

答案 0 :(得分:0)

在JBoss论坛中创建的线程969369也可以帮助它。

解决方法

有一种替代方法来记录泄漏连接,但我认为它不应该作为这个问题的最终答案。

解决方法是为JCA子系统启用debugerror模式 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)

您可以检查日志,因为服务器将转储异常,指出可帮助您找到泄漏的堆栈跟踪。它不是那么干净,但它帮助我们找到问题在我们的代码中的位置。