【问题标题】:Too many instances are running for Django Server为 Django 服务器运行的实例太多
【发布时间】:2016-02-23 21:53:27
【问题描述】:

当 Django 服务器启动时,我只能看到一个 Django 服务器实例在后台运行。但过了一会儿,我可以看到多个实例正在运行。

输出:

root@GoldenGate:~# ps |grep python 
 1592 root     79636 S    /usr/bin/python /root/celestial_NAS/manage.py runserver 0.0.0.0:80
 2749 root     27936 S    python /root/celestial_NAS/manage.py runsslserver --certificate /etc/ssl/certs/server.crt --key /etc/ssl/private/ser
 2750 root     21056 S    python /root/celestial_NAS/manage.py runserver 0.0.0.0:80
 3156 root     60160 S    /usr/bin/python /root/celestial_NAS/manage.py runserver 0.0.0.0:80
 3185 root     87764 S    /usr/bin/python /root/celestial_NAS/manage.py runserver 0.0.0.0:80
 3193 root     61188 S    /usr/bin/python /root/celestial_NAS/manage.py runserver 0.0.0.0:80
 8023 root     42732 S    /usr/bin/python /root/celestial_NAS/manage.py runserver 0.0.0.0:80
 8107 root     68360 S    /usr/bin/python /root/celestial_NAS/manage.py runserver 0.0.0.0:80
 8145 root     43760 S    /usr/bin/python /root/celestial_NAS/manage.py runserver 0.0.0.0:80
 9163 root     82712 S    /usr/bin/python /root/celestial_NAS/manage.py runserver 0.0.0.0:80
12351 root     73484 S    /usr/bin/python /root/celestial_NAS/manage.py runserver 0.0.0.0:80
13567 root      1304 S    /bin/sh -c python /root/celestial_NAS/changeadminpassword.py
13568 root     16684 R    python /root/celestial_NAS/changeadminpassword.py
13578 root      1304 S    grep python
16450 root     78608 S    /usr/bin/python /root/celestial_NAS/manage.py runserver 0.0.0.0:80
19979 root     48884 S    /usr/bin/python /root/celestial_NAS/manage.py runserver 0.0.0.0:80
24374 root     56060 S    /usr/bin/python /root/celestial_NAS/manage.py runserver 0.0.0.0:80
25372 root     59132 S    /usr/bin/python /root/celestial_NAS/manage.py runserver 0.0.0.0:80
root@GoldenGate:~#

这会影响系统的性能,请您帮我找出启动具有多个进程 ID 的单个 runserver(Django 服务器)的多个实例背后的根本原因。

【问题讨论】:

  • 你对settings.py做了什么修改吗?
  • django 服务器不是为生产环境构建的。您应该使用一些 WSGI 服务器(mod_wsgi、uwsgi、gunicorn 等)加上某种 HTTP 服务器,如 Nginx、Apache 等。通常,当文件更改时,开发服务器会生成一个新进程并杀死旧进程。如果运行 django 的用户无权终止进程(或者可能是类似的东西),那么进程将继续存在。正确的解决方案是在远程机器上进行生产设置。
  • @T.Chmelevskij ...您好,感谢您的回复...我修改了 settings.py 以添加 django 包和其他会话安全设置,会话超时。
  • @theWanderer4865,您好,感谢您提供信息...正如您所料,我正在使用 WSGI 服务器,但是“您告诉的一点如果正在运行 django 的用户没有终止进程的权限(或者可能是类似的东西)进程会一直存在。“,这里的用户是 root 拥有所有权限,所以这可能不是问题。
  • @T.Chmelevskij, stackoverflow.com/questions/5576305/… ,这是其他人遇到相同问题的链接,但我无法从中找到解决方案,请您也看看这个跨度>

标签: python django django-admin


【解决方案1】:

请按照以下说明操作:How to use Django with uWSGI

here 是另一个不错的选择。

我相信theWanderer4865已经详细解释了原因(耐心,哇)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 2016-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多