Docker – 你可以过度分配ram(tomcat)吗?

来自新手观点的问题:Docker是否可以“夸大”拉姆明智,这是一个好主意?

用例是单个服务器上的多个tomcats,其中tomcat具有处理80%负载需求的最小(XMS),但是处理额外负载的最大值(XMX).

10个tomcats,平均XMS为256mb,XMX为896,你会想要在完整的896 permgen(64m)os需要(64mb)= 1024MB时分配docker’s ram,即使它不会一直使用?

https://docs.docker.com/reference/run/#runtime-constraints-on-cpu-and-memory

If the host supports swap memory, then the -m memory setting
can be larger than physical RAM

如果有经验的人可以确认(和/或已经完成此操作!),我们将不胜感激!

-D

最佳答案 如文档中所提到的,Docker可以过度使用内存.这样做时遇到的问题与在主机上而不是容器上运行进程时遇到的问题没有什么不同.只要常驻内存占用(RES / RSS)小于主机上的实际RAM,就应该没问题.虚拟内存占用空间可能会大得多,但实际上并不需要分配(VIRT / VSZ).

我倾向于根本不配置交换,因为当它开始使用时,机器实际上变得如此缓慢(如果使用微调器)它不可能恢复.相反,没有交换,内存分配将失败并且处理死亡,但系统不需要重新启动以进行修复.

点赞