繁体   English   中英

Springboot 503服务不可用

[英]Springboot 503 Service Unavailable

长时间的写论文,我事先表示歉意!

背景:

我正在使用的服务的前端为angular7,springboot 2.0.0.RELEASE的后端为MongoDB(最新的docker版本)的数据库层。 应用程序的所有3层都在同一RHEL机器上的自己的docker容器中运行,但它们都在同一docker网络上。

Angular应用通过nginx容器静态托管,而springboot使用该命令'java -jar app.jar'作为jar运行。 除端口外,我没有更改Docker字段,因此docker的所有其他选项均为默认选项。

问题:

当我启动所有三个容器并尝试对其进行量角器e2e测试时,我会偶尔从后端收到503服务不可用。 我有12个测试套件,所有测试按顺序运行。 我等待所有容器都装满,然后再执行测试,否则它将在12个测试中的任何一个上随机失败。 测试失败后,我将手动执行测试步骤并尝试复制,但是它始终会通过。 当我在docker容器中将后端作为gradle springboot运行时,我没有遇到任何问题。 因此,仅当我尝试针对dockerized jar运行自动化测试时,问题才出现。

我已经在春季Web日志中将日志的记录从DEBUG增加到TRACE,一切检查正常。

我相信这是一个记忆问题。 运行Java jar可能是Java堆问题,还是后端或数据库的api调用过载? 这可能与为mongo和nginx容器分配大量内存有关。

解决该问题的任何信息或替代假设将不胜感激。 谢谢!

您是否真正分析了内存使用情况? 如果是内存问题,这可能会有所帮助:

mongo分配内存非常激进,尤其是有线Tiger存储引擎只是在消耗内存。 同样,在容器中,它不知道其他人正在使用内存。 您可能想告诉它不要那么贪心:

https://docs.mongodb.com/manual/core/wiredtiger/#memory-use

同样,最好限制每个容器的资源(尤其是如果它们在同一台机器上竞争):

https://docs.docker.com/config/containers/resource_constraints/#limit-a-containers-access-to-memory

希望这可以帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM