Java进程在一段时间后没有特殊原因即可完成

时间:2019-11-04 21:32:04

标签: java amazon-web-services kotlin

我有一个Java .jar文件,该文件以分离模式在AWS实例上启动。因此,当我退出ssh会话时,它仍然运行。

该应用程序会做一些网络工作,并且预计将运行数天,直到完成任务为止。

我已经在整个应用程序中创建了日志,并在main方法的末尾创建了日志。我还进行了全局try / catch并将日志记录添加到catch部分。

不过,几天后,我进入ssh并看到该应用程序刚刚停止运行。没有例外,main方法没有完成,因为最后的日志没有触发。看来这个过程只是在工作中被杀死了。有时它可以工作5个小时,有时需要3-4天而不会停止。

我不知道这可能是什么原因。我希望Java进程一直运行到完成或崩溃。我想念什么吗?

更新: 它是aws t2.micro,我认为是免费的。它运行ubuntu 18.04.3 LTS

1 个答案:

答案 0 :(得分:0)

您需要监视服务器和应用程序。首先要看的是您的实例Cloudwatch统计信息,查看是否有CPU或内存峰值。如果找到一个,就知道要在微型实例上运行应用程序需要解决的问题。供进一步阅读

Monitoring Your Instances Using CloudWatch

或者,您可以在运行应用程序时定期收集和转储Java进程统计信息。这样可以深入了解堆,堆栈和cpu的用法。检查此SO帖子以获取更多详细信息:

How do I monitor the computer's CPU, memory, and disk usage in Java?