【问题标题】:What does it mean if JVM is suspended?如果JVM被挂起是什么意思?
【发布时间】:2012-09-10 13:09:48
【问题描述】:

当我的应用程序运行时。我收到一条消息说:

Ping: Timed out waiting for signal from JVM.
The JVM was launched with debug options so this may be because the JVM
is currently suspended by a debugger.  Any future timeouts during this
JVM invocation will be silently ignored.

这是什么意思?似乎它会阻止来自外部的任何网络请求?因为当我将文件上传到它时,它失败了。帮帮我。

【问题讨论】:

标签: java jboss jvm java-service-wrapper


【解决方案1】:

在调试代码时,通常会在其中设置breakpoints,以便在某些时候中断程序的执行。当 JVM 遇到这样的断点时,它会暂停执行,并等待调试器继续执行(步入/跳过/步出等)。

如果您的流程附加了 UI 调试器(如 Eclipse),您可以从那里控制执行流程、观察变量值等。

您看到的消息只是说,您得到的超时可能只是这种情况的结果,并由 Java 服务包装器显示,as described here

如果wrapper.java.command 属性设置为“jdb”或“jdb.exe”或者wrapper.java.additional.<n> 属性之一设置为“-Xdebug”,Wrapper 将确定 JVM 正在使用调试器。

看来您是在调试模式下使用 Java Service Wrapper 启动应用程序,当某些超时到期时,它会通过附加消息警告您。

【讨论】:

  • 这意味着这个JVM的任何请求头都会在这种状态下失败?
  • 这意味着,其中一个包装器超时(在我链接到的页面底部进行了描述)已过期,并且包装器发出了警告。这与 HTTP 请求无关——它与包装器 ping JVM 以检查它是否还活着有关。您的应用程序可能会正常运行 - 调试会话很自然地会长时间冻结 JVM,并且包装器只是发出信号,它知道这个 long period,但是它认为 i>,这可能是由调试会话引起的,因为它在命令字符串/参数中发现了一些提示。
【解决方案2】:

JVM 调试选项允许您连接到 JVM 并逐步执行代码(Google java 远程调试以获取更多信息)。基本上这意味着可以远程暂停和控制代码执行(一次执行一条语句,检查变量值等)。虽然这非常有用,但它当然会干扰软件的正常运行。如果您不打算在调试模式下运行 JVM,请尝试找出设置它并删除它(它可能在 JAVA_OPTS(环境变量)中,或者它可能在您的启动脚本中或您使用的任何东西中启动 JVM。您正在寻找一个类似于 -Xdebug -Xrunjdwp:server=y, transport=dt_socket,address=#number#, suspend=n 的字符串。删除所有这些,将其注释掉,或者任何适合其设置位置的内容,然后重新启动您的 JVM。

【讨论】:

    【解决方案3】:

    这是什么意思?

    消息来自Java Service Wrapper。包装器尝试“ping”JVM 并没有得到响应。这很可能意味着您正在调试 JVM 并已将其暂停。当 JVM 暂停时,它不能响应任何类型的外部请求。所有线程都被冻结...

    它似乎会阻止来自外部的任何网络请求?因为当我向它上传文件时,它失败了。帮帮我

    是的,如果您暂停了 JVM,它会这样做。取消暂停 JVM,它应该会再次开始响应。

    请注意,如果您在调试模式下从 IDE 启动应用程序,JVM 可能会以暂停状态启动...取决于您的 IDE 设置/启动配置。


    我能想到的唯一其他解释是,您的网络或虚拟网络配置(例如数据包过滤器或虚拟网络路由)可能存在问题,导致网络数据包大量丢失。

    【讨论】:

    • 嗨,我的应用程序似乎仍在工作(我的意思是它可以响应网络请求。)即使出现消息。因为我当时通过在某个测试页面中发布文件来验证这一点。我之前说的上传文件失败是使用 HttpWebRequest api。你确定吗?
    • 不,我不确定,我的回答反映了这一点。但你确定我错了吗?
    • 好的,基于我的实验。我想我们可以说“它会那样做”。也许或可能是。对吗?
    • 不...如果您确实使用调试器暂停了整个 JVM,那么毫无疑问它将停止侦听请求。问题在于你是否真的这样做了。
    • 没有。我没有在我的源代码中设置任何断点。我很确定。服务包装器在调试器模式下运行。
    猜你喜欢
    • 1970-01-01
    • 2015-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-31
    • 2021-08-07
    • 2023-04-10
    相关资源
    最近更新 更多