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,无法分叉:无法分配内存的主要内容,如果未能解决你的问题,请参考以下文章