我一直在自定义应用程序中使用Java Service包装器已经有一段时间了,它一直运行良好.由于在最近几天将我们的应用程序更新到新版本,JVM开始挂起,然后包装器在日志中打印出来:JVM出现挂起:超时等待来自JVM的信号.
然后它会自动终止JVM并再次启动应用程序.这在大约10个小时的运行后发生,这使得调试变得更加困难.
当然,我将查看我们所做的更改,但没有做出重大更改,我怀疑是会导致此类问题.
我在哪里可以尝试找出发生了什么?来自应用程序的调试消息并不表示任何有趣的内容 如果JVM崩溃了,它通常会创建一个转储,这可以帮助调试它,但它是挂起的,所以它不会创建转储.如果我没有自动重启服务,我可以做些什么来重新启动它之前从JVM中获取一些有用的信息?
在我看来,JVM不应该挂起典型的编程错误.你之前遇到什么会导致JVM挂起?
阅读wrapper.ping.timeout属性.包装器软件经常与您的JVM通信,以确保它是活着的.如果该通信因任何原因而失败,则包装器会认为该进程已挂起并尝试重新启动它.
根据应用程序的架构方式,当包装器尝试"ping"它时,JVM可能正忙于处理其他内容.