相关疑难解决方法(0)

排除Nginx + Gunicorn + Django堆栈上的站点缓慢

问题我有

我有一个问题,有些网站需要很长时间才能加载("长时间"我的意思是长达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)

django hosting nginx gunicorn

19
推荐指数
1
解决办法
9929
查看次数

在Heroku上为Django配置gunicorn

我正在尝试在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的父目录中 …

python django heroku gunicorn

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

django ×2

gunicorn ×2

heroku ×1

hosting ×1

nginx ×1

python ×1