我有一个 java .jar 文件,我在分离模式下在 AWS 实例上启动该文件。所以当我退出 ssh session 时,它仍然运行。
该应用程序会执行一些网络操作,预计会运行几天,直到完成任务。
我已经在整个应用程序中创建了日志,并在主方法的末尾创建了日志。我还进行了全局 try/catch 并将日志记录添加到 catch 部分。
不过,几天后我进入 ssh 并看到该应用程序停止运行。没有异常(exception),main方法没有完成,因为日志最终没有触发。看来该进程只是在工作过程中被终止了。有时连续工作5小时,有时连续工作3-4天。
我不知道这可能是什么原因造成的。我希望 java 进程能够运行直到完成或崩溃。我错过了什么吗?
更新: 我认为它是 aws t2.micro,免费的一级。它运行 ubuntu 18.04.3 LTS
最佳答案
您需要监控服务器和应用程序。首先要查看的是任何 CPU 或内存峰值的实例 CloudWatch 统计信息。如果您找到了一个,那么如果您想在微实例上运行应用程序,您就知道需要修复什么。进一步阅读
Monitoring Your Instances Using CloudWatch
或者,您可以在运行应用程序时定期收集和转储 java 进程统计信息。这可以深入了解堆、堆栈和 cpu 使用情况。查看此 SO 帖子了解更多详细信息:
How do I monitor the computer's CPU, memory, and disk usage in Java?
关于java 进程在一段时间后结束,没有特殊原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58701374/