Play Framework和Docker生产配置

时间:2017-11-13 19:58:19

标签: docker playframework

我将PlayFramework 2.6与Docker一起使用。我使用sbt:dockerPublish构建并发布图像,然后使用Ansible将其部署到Amazon EC2实例。 我想获得强大的生产实例,我的问题是:

我是否需要更改docker的配置并播放才能获得最佳性能

我想要4个CPU内核和16 GB RAM的实例。在没有交换的情况下在普通Ubuntu上使用1GB内存运行Play之前我遇到了问题,我是否会遇到与Docker相同的内存问题,即使有16GB?

2 个答案:

答案 0 :(得分:1)

我不熟悉快速网络搜索之外的PlayFramework,我只是看到它是一个Java MVC的东西,但默认情况下Docker容器会耗尽尽可能多的内存和计算量。在这种情况下,这似乎是件好事,你担心Docker保守而不使用更大的EC2实例。

可以对容器内存使用情况设置硬限制或软限制:https://docs.docker.com/engine/admin/resource_constraints/#limit-a-containers-access-to-memory

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

答案 1 :(得分:1)

<强>内存

操作系统需要一些内存 - 比如100MB。在Java VM内部,你需要一些基本的内存,比如说32MB。 VM中的其余内存将取决于您的应用程序:并发用户数量,内存密集程度,优化程度。

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

<强> CPU

Play默认使用所有核心。如果需要,您可以进一步调整它。配置记录在此处:

https://www.playframework.com/documentation/2.6.x/ThreadPools#Configuring-the-default-thread-pool