我有一个从Ubuntu 14.04上的shell脚本运行的Java进程,它在没有任何可见原因且没有日志的情况下异常崩溃。 Java程序使用Twitter的Userstream API。我一直在寻找/ var / log中的跟踪,但没有发现任何可以明确指出问题的内容。请告知如何解决此问题并找到可能表明问题的任何有用日志。 另外,这是我的Java版本:
Java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
答案 0 :(得分:0)
对HotSpot崩溃进行故障排除的第一步是找到崩溃日志,或者称为致命错误日志。默认情况下,这些名称为hs_err_pid%pid.log
,%pid
是崩溃的VM的进程ID,通常可以在进程启动的cwd中找到。所述日志的名称和位置也可以通过-XX:ErrorFile
- VM参数进行影响。示例:
-XX:ErrorFile=/var/log/java/java_error%pid.log
。
您可以在here找到有关崩溃日志的更多信息。
该日志的内容可以指示发生的情况以及发生的情况。做好准备,发生HotSpot崩溃的情况通常只是不由托管Java程序中的错误引起。可以在here找到解释这些崩溃日志的详尽指南。
如果崩溃后没有找到这样的日志,则可能是VM未崩溃,但正常终止。在这种情况下,可能需要进行远程调试会话。远程调试详细here,并且还有一些关于SO的主题。
(在那种情况下,不太可能允许写入日志,即在崩溃期间没有可用的文件句柄。)
答案 1 :(得分:0)
问题是当我从服务器断开SSH时,我的进程终止了。为了在后台运行流程并在断开连接时阻止流程终止,请使用' nohup'
〜$ nohup process_name &
我在thread找到了答案。