【发布时间】:2011-06-27 17:48:41
【问题描述】:
我希望能够使用 jdwp 调试生产系统。
为此,我想将 -Xdebug -Xrunjdwp:transport=dt_socket,address=11122,server=y,suspend=n 添加到我正在启动的每个 java 进程中。
如果端口未激活,是否有任何开销?
在这种情况下,我的 JVM 会运行得更慢吗?
【问题讨论】:
-
我不建议直接调试生产系统。当您启动调试器时,您会干扰 JVM,并可能导致线程暂停等,这可能会产生副作用。出于调试目的,我宁愿制作系统的精确副本。
-
@Thomas 有一个很好的观点(即使开销为零也适用)。如果您确实需要并且小心,也许可以使用生产数据库,但提供一个额外的 JVM(不适用于“真实”请求)进行调试。
-
@Thilo 我也宁愿复制生产数据库而不是意外更改一些数据。我知道即使您认为自己有一个精确的副本,有时也很难找到错误——这可能并不总是正确的(某些服务器/操作系统设置可能不同)——但通常值得付出努力,因为生产系统不是中断或意外损坏。
-
@Thomas。同意。我说“也许”和“小心”。不幸的是,有时棘手的现实问题很难在测试环境中复制(我假设实际上有一个测试环境,它首先被使用,我们正在谈论一个真正需要查看生产的罕见情况数据)。
标签: java jvm remote-debugging