java 进程在一段时间后结束,没有特殊原因

标签 java amazon-web-services kotlin

我有一个 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/

相关文章:

java - 使用 restclient 或 postman 发送 gzip 数据

java - 将 libgdx 核心发布到artifactory

node.js - AWS Lambda postgres 查询超时

android - 如何在 Kotlin 中从 Android "strings.xml"访问值

java - 以平铺模式打开 JavaFX 子窗口 (i3wm)

java - 为什么重新开放后舞台大小和位置没有保持?

java - 如何通过网络快速发送图像数据?

node.js - AWS Beanstalk - 在工作人员和网络服务器之间共享数据库层

amazon-web-services - 如何在 ECS 任务定义中放置多行命令

java - 使用 Kotlin 在 Android 中发送用于 Volley 授权的 header