Java Tomcat意外崩溃

Java Tomcat意外崩溃,java,jakarta-ee,tomcat,Java,Jakarta Ee,Tomcat,在我的java应用程序中,tomcat意外关机。它只向网站显示,“由于维护停机或容量问题,服务器暂时无法满足您的请求。” 请稍后再试。 'Apache/2.2.17(Unix)mod_ssl/2.2.17 OpenSSL/0.9.8l DAV/2 mod_jk/1.2.31服务器位于example.com端口8080' 我也检查了卡塔琳娜的日志,没发现什么。我正在检查err_pid文件中的jvm错误,该文件表示存在错误,但我无法找出原因,我不是服务器架构师 服务器详细信息: 操作系统:Red H

在我的java应用程序中,tomcat意外关机。它只向网站显示,“由于维护停机或容量问题,服务器暂时无法满足您的请求。”

请稍后再试。
'Apache/2.2.17(Unix)mod_ssl/2.2.17 OpenSSL/0.9.8l DAV/2 mod_jk/1.2.31服务器位于example.com端口8080'

我也检查了卡塔琳娜的日志,没发现什么。我正在检查err_pid文件中的jvm错误,该文件表示存在错误,但我无法找出原因,我不是服务器架构师

服务器详细信息:

操作系统:Red Hat Linux
jdk:1.5.0_03
tomcat:5.5.9
内存:16 gb 这是err_pid.log文件。我想你会发现问题的

err_pid.log 另外,我在catalina.log中报告了一个错误。请也调查一下

    java.net.ConnectException: Connection refused
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
        at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:364)
        at java.net.Socket.connect(Socket.java:507)
        at java.net.Socket.connect(Socket.java:457)
        at java.net.Socket.<init>(Socket.java:365

)
    at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:394)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:320)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:411)
java.net.ConnectException:连接被拒绝
位于java.net.PlainSocketImpl.socketConnect(本机方法)
位于java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
位于java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
位于java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
位于java.net.socksocketimpl.connect(socksocketimpl.java:364)
位于java.net.Socket.connect(Socket.java:507)
位于java.net.Socket.connect(Socket.java:457)
位于java.net.Socket(Socket.java:365)
)
位于org.apache.catalina.startup.catalina.stopServer(catalina.java:394)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)中
位于java.lang.reflect.Method.invoke(Method.java:585)
位于org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:320)
位于org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:411)

在没有任何确凿证据的情况下,我可以提供一些可能有用的观察结果

  • 您使用的是非常旧的Java版本。Java5于2004年发布,1.5.003是一个非常早期的补丁版本。公共补丁于2009年停止

  • 硬JVM崩溃(导致“err_pid”转储文件)通常可归因于第1/3个本机代码库中的错误,偶尔也可归因于JVM错误

  • 通过查看“err_pid”文件,通常可以获得发生了什么的线索


  • 我的建议是升级您的Java版本,至少升级到最后一个公开的Java5版本,最好升级到Java7。Tomcat升级可能是有保证的。。。以及对机器应用安全补丁的全面突击

    如果您有必要的资金,您应该在测试/UAT系统上尝试所有这些补救措施,然后再将其投入生产。Java升级和Tomcat升级可能会带来问题,您不希望在生产服务器上首先体验这些问题


    其次,如果这是一次性事件,您可以做的最有效的事情就是保存所有证据(日志文件、转储文件、配置等),并将问题放在一边。现在是YMMV,但一般来说,只有在这种问题再次出现时才值得研究。(首先,对于一次性事件,很难知道您已经确定了原因并实施了正确的补救措施……)

    您可以先发布错误。大多数情况下,崩溃都是意外的,不是吗?请查看您的
    catalina.out
    或Tomcat启动程序脚本输出stdout/stderr的任何文件,因为jdk和Tomcat的版本都非常旧。请检查是否可以更新。首先,感谢大家对我的问题做出回应。这是我可以提供给你的细节。我找到了三根圆木。1.应用程序日志,其中没有问题报告您好斯蒂芬,非常感谢您的回复。我已经发布了err_pid文件的一部分,我认为它捕获了一些错误轨迹,但我无法理解该文件中的错误是什么。我请求你调查一下。如果还不够,或者你还需要什么,请告诉我。谢谢。“编辑的亮点”没有帮助。。。您需要创建整个stacktrace+上下文和整个err_转储文件。从您发布的内容中,我可以说这可能与本机套接字代码和/或本机字体处理有关。两者都是JVM代码。。。所以建议进行Java升级。你好,Stephen,我无法发布整个err_pid文件,因为发布仅限于特定的字母数。请建议怎么做。尽管我从一开始就发布了部分err_pid文件。另外,您所说的可能是本机套接字代码的问题,我相信您在查看了我的catalina.log文件后会建议这样做。但是Stephen,当我手动重新启动服务器时,我也会得到同样的日志。非常感谢。@user3378974 Stephen正确地描述了它:您至少应该升级到最新的java 5版本。这可能是一个旧的jvm错误,多年来可能已经修复。如果您在使用最新的jdk 5时仍遇到此问题,请更新您的问题。感谢MRalwasser的回复。但是你能告诉我如果我升级java版本可能会遇到哪些问题吗?我的意思是,如果我升级java版本,可能会面临哪些挑战?
        java.net.ConnectException: Connection refused
            at java.net.PlainSocketImpl.socketConnect(Native Method)
            at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
            at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
            at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
            at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:364)
            at java.net.Socket.connect(Socket.java:507)
            at java.net.Socket.connect(Socket.java:457)
            at java.net.Socket.<init>(Socket.java:365
    
    )
        at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:394)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:320)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:411)