我遇到的问题
我遇到了一个问题,一些网站需要很长时间才能加载(“很长时间”,我指的是长达16秒)。有时它们可能会完全超时,这会生成一个Nginx 504错误。通常,当站点超时时,我可以重新加载该站点,它会加载得很快。我遇到问题的网站的访问量非常低。我正在通过加载Django管理索引页面来测试网站,以便尝试消除由于糟糕的代码可能导致的任何缓慢。还应该注意的是,这个特定的站点只使用Django管理员,因为它是仅供员工使用的内部网类型的站点。
主机设置
我托管的所有网站都在两个Rackspace云服务器上。第一个服务器是我的应用服务器,它有1024MB的RAM,第二个服务器是我的数据库服务器,它有2048MB的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
为了尝试解决问题,我编写了一个快速的小script,它打印出应用服务器上的内存使用情况。
将站点域匿名的示例打印出来:
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,这完全解决了站点的缓慢问题。尽管我能够解决这个问题,但我花的时间比我想象的要长得多,我仍然觉得我基本上是在猜测是什么导致了网站速度变慢。所有这些都引出了我的问题……
问题
https://stackoverflow.com/questions/10401513
复制相似问题