Nginx,无法分叉:无法分配内存

Posted

技术标签:

【中文标题】Nginx,无法分叉:无法分配内存【英文标题】:Nginx, unable to fork: Cannot allocate memory 【发布时间】:2015-05-17 01:45:14 【问题描述】:

我正在尝试按照http://uwsgi-docs.readthedocs.org/en/latest/tutorials/Django_and_nginx.html 的教程进行操作。我正在亚马逊 EC2 上使用 ubuntu 14.4 实例。我在测试中一切正常,但是在将我的 django 应用程序上线后,我注意到服务器正在返回:

 HTTP/1.1 503 Service Unavailable

当我登录到我的 ubuntu EC2 实例时,我重新启动了 uwsgi 和 nginx 并得到:

 ubuntu@ip-172-31-28-196:~$ workon env1 
 (env1)ubuntu@ip-172-31-28-196:~$ uwsgi --ini /home/ubuntu/tproxy/tp/mysite_uwsgi.ini --daemonize=/var/log/yourproject.log
 [uWSGI] getting INI configuration from /home/ubuntu/tproxy/tp/mysite_uwsgi.ini
 (env1)ubuntu@ip-172-31-28-196:~$ sudo /etc/init.d/nginx restart /tp/m
 sudo: unable to fork: Cannot allocate memory

出了什么问题?我该如何解决这个问题?

编辑:

(env1)ubuntu@ip-172-31-28-196:~$ free -h
             total       used       free     shared    buffers     cached
Mem:          992M       192M       799M       360K        37M        75M
-/+ buffers/cache:        79M       913M
Swap:           0B         0B         0B

(env1)ubuntu@ip-172-31-28-196:~$ uname -a
Linux ip-172-31-28-196 3.13.0-44-generic #73-Ubuntu SMP Tue Dec 16 00:22:43 UTC 2014 x86_64 x86_64 x
86_64 GNU/Linux

【问题讨论】:

您使用的实例大小是多少?像 micro 这样的小型实例没有足够的内存用于所有类型的应用程序。 我使用的是微型尺寸,但它是一个非常小的 django 应用程序,它会访问一个 api 并每隔几分钟返回一个响应。不涉及分贝。我以前用过它,所以我知道它可以在微型实例上工作。 您可能需要检查您的线程和内存设置以限制正在创建的线程数。如果尚未启用交换,则可以启用它,但是如果您最终击中太多,那将非常慢。 我对服务器管理完全陌生,来自 php 和 python 应用程序开发。你能给我一些基本的命令或位置看吗? 哇,新问题,我尝试 sshing 进入 ec2 命令行并且它超时,所以我无法运行任何命令。我将重启 ubuntu 实例。 【参考方案1】:

请确保系统没有使用free -h 耗尽内存并且您没有遇到进程内存限制,您可以使用ulimit -a 进行检查

【讨论】:

【参考方案2】:

如果你还有磁盘空间(比如 1GB),我建议你启用交换,一些应用程序需要更多内存来初始化,但之后它需要更少的内存,因此交换可以帮助你度过那个时期。

【讨论】:

【参考方案3】:

您可以尝试在mysite_uwsgi.ini 中添加limite-as = 1024

【讨论】:

以上是关于Nginx,无法分叉:无法分配内存的主要内容,如果未能解决你的问题,请参考以下文章

使用Paperclip保存照片时,Rails app“无法分配内存”

linux系统无法分配内存

无法足够快地分配内存?

fork() 并释放所有分配的内存

明明还有大量内存,为啥报错“无法分配内存”?

明明还有大量内存,为啥报错“无法分配内存”?