在Nginx+;Gunicorn&x2B;Django堆栈 我遇到的问题
我遇到了一个问题,一些网站需要很长时间才能加载(我所说的“长时间”是指最多16秒)。有时,它们可能会完全超时,从而生成Nginx 504错误。通常,当一个站点超时时,我可以重新加载该站点,它会很快加载。我遇到问题的站点的访问量非常低。我正在通过加载Django管理索引页面来测试该站点,以尝试消除可能由于糟糕的代码而导致的任何缓慢。还应该注意的是,这个特定的站点只使用Django管理员,因为它是一个仅供员工使用的intranet类型的站点 主机设置 我托管的所有站点都位于两台Rackspace云服务器上。第一个服务器是我的应用服务器,它有1024MB的RAM,第二个服务器是我的数据库服务器,它有2048MB的RAM。应用服务器使用Nginx为每个站点提供服务,Nginx为每个站点的Django-Gunicorn工作人员提供所有静态文件并代理所有其他内容 当查看数据库服务器的RAM和CPU负载时,看起来数据库服务器上的一切都很好在Nginx+;Gunicorn&x2B;Django堆栈 我遇到的问题,django,nginx,hosting,gunicorn,Django,Nginx,Hosting,Gunicorn,我遇到了一个问题,一些网站需要很长时间才能加载(我所说的“长时间”是指最多16秒)。有时,它们可能会完全超时,从而生成Nginx 504错误。通常,当一个站点超时时,我可以重新加载该站点,它会很快加载。我遇到问题的站点的访问量非常低。我正在通过加载Django管理索引页面来测试该站点,以尝试消除可能由于糟糕的代码而导致的任何缓慢。还应该注意的是,这个特定的站点只使用Django管理员,因为它是一个仅供员工使用的intranet类型的站点 主机设置 我托管的所有站点都位于两台Rackspace云服
$ 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
为了尝试解决正在发生的问题,我写了一篇简短的文章,其中列出了应用服务器上的内存使用情况
使用匿名站点域打印的示例:
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: 2047 828 1218
Gunicorn memory usage by webste:
site01.example.com 31 MB
site02.example.com 19 MB
site03.example.com 7 MB
site04.example.com 9 MB
site05.example.com 47 MB
site06.example.com 25 MB
site07.example.com 14 MB
site08.example.com 18 MB
site09.example.com 27 MB
site10.example.com 15 MB
site11.example.com 14 MB
site12.example.com 7 MB
site13.example.com 18 MB
site14.example.com 18 MB
site15.example.com 10 MB
site16.example.com 25 MB
site17.example.com 13 MB
site18.example.com 18 MB
site19.example.com 37 MB
site20.example.com 30 MB
site21.example.com 23 MB
site22.example.com 28 MB
site23.example.com 80 MB
site24.example.com 15 MB
site25.example.com 5 MB
Gunicorn配置文件示例:
pidfile = '/var/run/gunicorn_example.com.pid'
proc_name = 'example.com'
workers = 1
bind = 'unix:/tmp/gunicorn_example.com.sock'
Nginx配置示例:
upstream example_app_server {
server unix:/tmp/gunicorn_example.com.sock fail_timeout=0;
}
server {
listen 80;
server_name example.com;
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
location = /favicon.ico {
return 404;
}
location /static/ {
root /srv/sites/example/;
}
location /media/ {
root /srv/sites/example/;
}
location / {
proxy_pass http://example_app_server;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
}
}
正如你所看到的,有很多内存需要交换,所以为了解决我的问题,我升级了应用服务器上的ram,这完全修复了网站的缓慢。尽管我能够解决这个问题,但我花了比我想要的时间长得多的时间,我仍然觉得我基本上是在猜测是什么导致了网站速度变慢。所有这些都引出了我的问题
问题
在一台只有1GB内存的服务器上可以托管很多站点。您的内存利用率接近100%,您拥有的数字可能是“备用”数字。在服务请求的过程中,每个进程的RAM使用率可以而且将会膨胀。一开始,您需要向这个实例添加更多RAM,更好的是,将一些站点转移到另一台服务器上 关于你的问题: