首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker使用所有内存并使系统崩溃。

问Docker使用所有内存并使系统崩溃。
EN

Stack Overflow用户
提问于 2015-11-09 23:58:13
回答 3查看 4.8K关注 0票数 3

我有一个AWSt2.带有码头的微EC2实例,并弹出以下实例;

这就产生了类似docker stats的东西;

代码语言:javascript
复制
CONTAINER   MEM USAGE/LIMIT     MEM % 
wordpress   331.9 MB/1.045 GB   31.77%
nginx       18.32 MB/1.045 GB   1.75% 
mysql       172.1 MB/1.045 GB   16.48%

然后,我对它运行围城默认的15个并发连接,这会产生多个apache进程,达到EC2实例的内存限制,由于没有更多的内存而导致停靠器和bash崩溃,需要我的干预才能让它再次全部运行。

关于这个我有几个问题。

  1. 我期望太多了吗?这个设置应该能够处理15个并发连接吗?如果是的话,需要做哪些改变?
  2. 我怎样才能自动从这里恢复呢?有没有一种方法可以检测到内存正在达到容量,并在内存使用量减少之前做一些事情(比如拒绝请求或类似的)?有没有办法在高请求量期间保持系统稳定,所以一旦它结束了,就不需要我的干预来恢复它了吗?

*我已经做了这,将mysql内存从22%降到15%。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-11-10 01:06:39

给定一个t2.微型只有1GB的总量,并且每个容器都有1GB的限制,那么您是否尝试过限制每个容器的最大内存使用量(按照http://docs.docker.com/engine/reference/run/#user-memory-constraints),这样总内存限制不会超过1GB?

票数 4
EN

Stack Overflow用户

发布于 2015-11-11 06:30:12

阻止EC2实例崩溃的最大影响是限制了停靠容器可以使用的内存和-m选项per @palfrey的答案。

此外,还需要进行一些调整,以减少内存占用,并让服务响应15个并发用户,尽管速度有点慢。这包括;

MySQL

WordPress

  • 禁用KeepAlive
  • 限制服务器: StartServers 1 MinSpareServers 1 MaxSpareServers 3 MaxRequestWorkers 10 MaxConnectionsPerChild 3000

Docker

我创建了一些码头映像,它扩展了默认映像,以包括这些优化;

在我的博客帖子中有更多的细节。

票数 3
EN

Stack Overflow用户

发布于 2015-11-10 00:28:20

  1. 很可能,一台微型手机只有1GB的内存。您可以在没有停靠器的情况下运行此配置,但是您必须根据内存限制进行调整。码头工人可能会增加一些开销。有理由同时运行nginx和apache吗?
  2. 通常,您可以测试线程并将其限制在系统所能处理的范围内,您可能可以使用缓存来帮助提高性能。Apache、nginx、php都有可以控制允许创建的线程数量的设置。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33620572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档