我有一个问题,有些网站需要很长时间才能加载("长时间"我的意思是长达16秒).有时它们可能会完全超时,从而产生Nginx 504错误.通常,当网站超时时,我可以重新加载该网站,它会很快加载.我遇到问题的网站获得的流量非常低.我正在通过加载Django管理员索引页面来测试该站点,以便尝试消除因代码不佳而导致的任何缓慢.还应注意,此特定站点仅使用Django管理员,因为它只是员工的Intranet类型站点.
我托管的所有网站都在两个Rackspace云服务器上.第一台服务器是我的应用服务器,有1024 MB的RAM,我的第二台服务器是我的数据库服务器,有2048 MB的RAM.应用服务器使用Nginx为每个站点提供服务,Nginx为每个站点的Django Gunicorn工作者提供所有静态文件和代理服务.
在查看数据库服务器RAM和CPU负载时,似乎数据库服务器上的一切正常.
$ free -m
total used free shared buffers cached
Mem: 1999 1597 402 0 200 1007
-/+ buffers/cache: 389 1610
Swap: 4094 0 4094
Top shows a CPU load average of: 0.00, 0.01, 0.05
Run Code Online (Sandbox Code Playgroud)
为了尝试解决发生的事情,我写了一个快速的小脚本,打印出应用服务器上的内存使用情况.
示例打印出来的网站域名是匿名的:
Celery: 23 MB
Gunicorn: 566 MB
Nginx: 8 MB
Redis: 684 KB
Other: 73 MB
total used free shared buffers cached
Mem: 993 906 87 0 19 62
-/+ buffers/cache: 824 169
Swap: …Run Code Online (Sandbox Code Playgroud) 我正在尝试在Heroku上设置一个测试Django项目.遵循这里的建议和Heroku入门我试图使用gunicorn而不是Django开发服务器.
这是我第一次尝试Procfile:
web: gunicorn_django --workers=4 --bind=0.0.0.0:$PORT my_project/settings.py
worker: python my_project/manage.py celeryd -E -B --loglevel=INFO
Run Code Online (Sandbox Code Playgroud)
这给了我这个错误:
ImportError: Could not import settings 'settings.py' (Is it on sys.path?): No module named py
Run Code Online (Sandbox Code Playgroud)
我决定采取不同的方式并遵循这里的建议.现在我的Procfile看起来像这样:
web: gunicorn_django -b 0.0.0.0:\$PORT -w 9 -k gevent --max-requests 250 --preload my_project.settings
Run Code Online (Sandbox Code Playgroud)
(我还更新了我的需求文件以包含gevent.)它给了我同样的错误:
ImportError: Could not import settings
Run Code Online (Sandbox Code Playgroud)
最后,我把它设置为settings:
web: gunicorn_django -b 0.0.0.0:\$PORT -w 9 -k gevent --max-requests 250 --preload settings
Run Code Online (Sandbox Code Playgroud)
但是现在我收到了这个错误:
Error: django project not found
Run Code Online (Sandbox Code Playgroud)
我的Django项目的设置方式是settings.py文件位于repo的父目录中 …