我的服务器上部署了一个 Jetty 应用程序,但不断终止,原因不明。如能提供任何帮助以解决此问题,我将不胜感激。
细节:
OS:
Slackware Linux 13.1
Linux 2.6.32.16 running as Xen guest OS
Java info:
java version "1.6.0_20"
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
Java HotSpot(TM) Client VM (build 16.3-b01, mixed mode, sharing)
nginx 0.7.67 config (only pertinent items):
location /app {
proxy_pass http://localhost:50013;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
Jetty 应用程序通过 daemontools 在包含以下内容的运行文件中启动:
#!/bin/sh
cd /path/to/app
exec setuidgid userXYZ /usr/lib/java/bin/java -server -verbose -jar ./app.jar
日志中没有证据表明它为何偶尔关闭(之后 daemontools 会再次启动它)。
显然,当使用内存会话时,这并不理想,因为用户的会话会终止。
因此,我使用 strace 运行了该应用程序,没有使用 daemontools,输出可以在这里找到:
谢谢戴尔
答案1
首先,您的系统上是否有一个名为“core”的文件?这可能是 Jetty 崩溃时生成的。
以下是一些可能性:
您的 JVM 可能由于频繁的垃圾收集而出现故障。您可以使用 VisualVM 等工具对此进行测试。如果该 GUI 不可用,则可以使用 JVM 开关将 GC 统计信息打印到日志文件中。
您的 JVM 可能已耗尽堆空间。GC 分析也会揭示这种可能性。如果增加堆大小会发生什么?
我的理解是,你不能真正地像调整 J2EE 服务器那样调整 Jetty,所以这可能没问题。
最后一种可能性是你的应用程序出了问题。你可以使用以下教程来调试在 Jetty 上运行的应用程序:http://sujitpal.sys-con.com/node/508048/mobile。
祝你好运!