【发布时间】:2021-09-26 12:55:52
【问题描述】:
我刚刚开始测试将我的 spring boot webapp 部署到 AWS 上。我目前有一个运行 Ubuntu 服务器的 t2.micro (1vcpu/1gb),我已经使用 mvn clean install 将我的应用程序打包到一个 fat jar 中。
tomcat 服务器最初部署良好,我可以远程访问我的 API,但是,几个小时后(未能准确计时),服务器似乎自行停止。我登录到实例,java 进程似乎已自行停止。
我用来运行jar的命令是典型的java -jar xxxxx.jar。
该应用有 2 个实体、2 个控制器、3 个服务。没什么复杂的。
目前仍在使用 h2 作为 db,因为我只是在测试一些东西,但是 db 初始化为空且没有数据。
根据我在其他线程上阅读的内容,这听起来像是一个 OOM 问题。贡献因素是 h2 db,它是一个 in-mem db。
但是,它是一个非常小的应用程序,如前所述,数据库一开始是空的。所以怀疑它是否消耗了超过 100mbs 的那么多 RAM。空闲服务器消耗约 23% 的 RAM,缓存约 500mb,空闲约 300mb。
此外,我无法在服务器上找到日志说它由于 OOM 而杀死了 java 进程。 (我在 var/logs/dmesg 中搜索过)
我还没有尝试将它部署到更大的东西上,但想在走错方向之前获得一些见解。
如果添加上下文,将发布我的 java 代码。提前致谢。
【问题讨论】:
-
您是否只是通过 SSH 登录并通过 SSH 控制台会话启动应用程序?如果是这样,会话可能会超时并终止进程。您应该考虑将其作为后台服务运行。应用程序当前是否配置为登录到控制台?如果是这样,您应该在启动应用程序时将控制台输出重定向到日志文件,以便稍后查看 Spring Boot 日志以了解诸如 OOM 错误之类的内容。您还应该在 CloudWatch 中检查实例的指标,看看您是否耗尽了 t2 服务器的 CPU 积分或其他任何东西。
-
是的,我确实是。将研究将其作为后台服务运行,并将日志配置为文件。谢谢你的建议。将保持此线程发布。
标签: amazon-web-services spring-boot amazon-ec2 ubuntu-server