我试图在 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。