Play框架和Docker产品配置

Play框架和Docker产品配置,docker,playframework,Docker,Playframework,我将PlayFramework2.6与Docker一起使用。我使用sbt:dockerPublish构建并发布映像,然后使用Ansible将其部署到AmazonEC2实例。 我想获得强大的生产实例,我的问题是: 我是否需要更改docker和play的配置以获得最佳性能 我想要一个有4个CPU核和16 GB RAM的实例。在使用1GB内存在普通Ubuntu上运行Play之前,我遇到过一些问题,即使有16GB内存,我也会在Docker上遇到同样的内存问题吗 除了快速web搜索之外,我对PlayFra

我将PlayFramework2.6与Docker一起使用。我使用
sbt:dockerPublish
构建并发布映像,然后使用Ansible将其部署到AmazonEC2实例。 我想获得强大的生产实例,我的问题是:

我是否需要更改docker和play的配置以获得最佳性能


我想要一个有4个CPU核和16 GB RAM的实例。在使用1GB内存在普通Ubuntu上运行Play之前,我遇到过一些问题,即使有16GB内存,我也会在Docker上遇到同样的内存问题吗

除了快速web搜索之外,我对PlayFramework不太熟悉,我只是想看看它是Java MVC的东西,但默认情况下Docker容器将使用与实例相同的内存和计算量。在这种情况下,这似乎是一件好事,您担心Docker过于保守,没有使用更大的EC2实例

您可以对容器内存使用进行硬限制或软限制:


在实例ssh上运行容器并运行
docker stats
后,您就可以跟踪容器的资源使用情况。

内存

操作系统需要一些内存,比如100MB。在Java虚拟机中,您需要一些基本内存,比如32MB。VM中的其余内存将取决于您的应用程序:有多少并发用户,它的工作占用了多少内存,您对它进行了多少优化

如果您的机器/VM/容器具有1GB的RAM,则使用Java的
-Xmx768M
选项将Java VM最大堆大小设置为小于此值,这样您就不会导致机器进行交换

CPU

默认情况下,Play设计为使用所有内核。如果需要,您可以进一步调整它。此处记录了配置: