pat*_*oid 8 java logging monitoring jetty
我遇到了码头间歇性撞击的问题,我正在使用Jetty 6.1.24.
我正在运行一个neo4j Spring MVC webapp,Jetty将保持运行大约1小时,然后我必须重新启动Jetty.它运行在小型amazon ec2实例上,debian具有1.7GB的RAM.
我开始使用Jetty java -Xmx900m -server -jar start.jar
我使用putty连接到服务器,当Jetty崩溃putty会话断开连接时,我看不出是什么错误导致它崩溃.
我希望能够看到它是否是Spring生成的错误,我不知道如何使用Jetty从spring应用程序记录输出.或者如果它是Jetty或内存问题,那么监控Jetty的最佳方法是什么?我无法在运行Windows的本地计算机上重新创建此项.您认为最好的方法是什么?谢谢
这不是一个程序员问题; 也许它会转移到ServerFault.
您没有明确说明您正在使用哪种操作系统,但我对某些Linux发行版有所猜测.你有两种方法可以搞清楚是什么问题:
在屏幕上开始您的会话. 只要实际机器开机,屏幕就会一直运行,直到您重新启动操作系统(或退出屏幕).
你像这样开始屏幕
screen
Run Code Online (Sandbox Code Playgroud)
然后你会得到一个新的提示,你可以在那里开始你的程序(cd foo,jetty等).如果你很开心并且你只需要去某个地方,你可以通过按CTRL + A然后按CTRL + D来断开屏幕.在你调用之前,你会回到你所在的地方screen.
返回查看screen您键入的内容screen -R,表示恢复现有屏幕.你应该再看看码头.
好的一点是,如果你失去连接(或者你意外或者其他什么关闭腻子)那么你可以screen -list用来获取正在运行的屏幕列表,然后强行分离它们-D并将它们重新连接到当前的腻子-R,没有伤害!
使用nohup.Nohup或多或少地分离了你从控制台运行的进程,所以它的输出都没有到达终端.您以正常方式启动程序,但是将该单词添加nohup到命令中.
例如:
nohup ls -l &
Run Code Online (Sandbox Code Playgroud)
后ls -l完成后,你的输出存储在的nohup.out.
当你说崩溃时,你的意思是 JVM 段错误并消失吗?如果是这种情况,我会检查并确保您没有耗尽机器的可用内存。当系统内存太低以至于 JVM 无法分配到其最大内存时,Linux 上的 Java 将崩溃。例如,您已将最大 JVM 内存设置为 500MB,其中目前使用了 250MB。然而,Linux 操作系统只有 128MB 可用空间。这会产生不稳定的结果,并且 JVM 会出现段错误。
在 Windows 上,JVM 在这种情况下表现得更好,并且当系统内存不足时会抛出 OutOfMemoryError。
我相信 Jetty 有一些本机代码可以进行大量请求处理。确保它没有被使用。您希望将崩溃隔离到 Java 而不是一些奇怪的本机库。如果您拿出本机的东西并发现它可以工作,那么您就可以找到导致它的原因的答案。如果它继续崩溃那么它很可能就是我所描述的。
您可以使用 -Xms900m 强制 JVM 在启动时分配所有内存,这可以确保 JVM 不会与其他进程争夺内存。一旦分配了完整的 Xmx 数量,它就不会崩溃。这不是一个解决方案,但您可以通过这种方式轻松测试它。
| 归档时间: |
|
| 查看次数: |
5856 次 |
| 最近记录: |