Re: Nginx медленно отдает статику медленным клиентам!

Илья Шипицин chipitsine at gmail.com
Fri Oct 12 10:52:19 UTC 2012


ответ от апстрима может в некоторых случаях помещаться во временный файл,
особенно, если сервер отдал контент быстро, а пользователь забирает
медленно. и узким местом может являться жесткий диск.

iotop что показывается ?

11 октября 2012 г., 1:45 пользователь ProxyKZ <nginx-forum at nginx.us>написал:

> Есть сервер хостинга Xeon 2,4GHz QuadCore / RAM 2Gb / SAS 500Gb работает
> около 100 сайтов клиентов с посещаемостью по 50-100 в день и 7-10 сайтов по
> 1000-2000 в день. Nginx/0.6.32 раздает статику и стоит перед Apache. Раньше
> Apache либо съедал всю память и nginx не могу до него дсотучаться выдавая
> 502 и т.п. ошибки, потом ограничили в конфиге Апача MaxClient до 25 и стало
> стабильнее. Но после прописывания бОльшей части сайтов в Nginx - сайты эти
> которых статику начал отдавать nginx стали тормозить - сильно азметно на
> медленных клиентах. После нескольких запросов как будто пауза образуется,
> то
> есть чем чаще обращение к сайту тем тормозит сильнее - на странице прямо
> видно что недогружаются картинки и js и css, отладчик барузера часто
> ругается на файлы что их нет (404), тут же если обновить страницу они могут
> успешно загрузиться. У клиентов на широких каналах от 1MBit/s все леатет и
> тормоза почти незаметны, а на медленных каждое 3-5-ое открытие любого сайта
> замедляется от 10 секунд до даже минут иногда.
>
> Это конфиг Apache:
> -----------------------------
> ServerRoot "/etc/apache2"
>
> LockFile /var/lock/apache2/accept.lock
>
> PidFile ${APACHE_PID_FILE}
>
> Timeout 15
> KeepAlive Off
> MaxKeepAliveRequests 400
> KeepAliveTimeout 3
>
> ExtendedStatus On
>
> <IfModule mpm_prefork_module>
>     StartServers          1
>     MinSpareServers       2
>     MaxSpareServers      10
>     MaxClients           25
>     MaxRequestsPerChild   1000
> </IfModule>
>
> <IfModule mpm_worker_module>
>     StartServers          2
>     MaxClients           50
>     MinSpareThreads      25
>     MaxSpareThreads      75
>     ThreadsPerChild      25
>     MaxRequestsPerChild   1000
> </IfModule>
>
> # These need to be set in /etc/apache2/envvars
> User ${APACHE_RUN_USER}
> Group ${APACHE_RUN_GROUP}
>
> AccessFileName .htaccess
>
> #
> # The following lines prevent .htaccess and .htpasswd files from being
> # viewed by Web clients.
> #
> <Files ~ "^\.ht">
>     Order allow,deny
>     Deny from all
> </Files>
>
> DefaultType text/plain
>
> HostnameLookups Off
> ErrorLog /var/log/apache2/error.log
> LogLevel info
>
> Include /etc/apache2/mods-enabled/*.load
> Include /etc/apache2/mods-enabled/*.conf
>
> Include /etc/apache2/httpd.conf
>
> Include /etc/apache2/ports.conf
>
> LogFormat "%v:%p %h %l %u %t \"%r\" %>s %b \"%{Referer}i\"
> \"%{User-Agent}i\"" vhost_combined
> LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""
> combined
> LogFormat "%h %l %u %t \"%r\" %>s %b" common
> LogFormat "%{Referer}i -> %U" referer
> LogFormat "%{User-agent}i" agent
>
> Include /etc/apache2/conf.d/
>
> NameVirtualHost *:443
> <VirtualHost _default_:443>
>         ServerName example.com:443
>         SSLEngine on
>         SSLCertificateFile /etc/apache2/ssl.crt/server.crt
>         SSLCertificateKeyFile /etc/apache2/ssl.key/server.key
> </VirtualHost>
>
> Include /usr/local/ispmgr/etc/ispmgr.inc
>
> <Directory /home/user/www/domen.example.com>
>         AllowOverride all
>         php_admin_value open_basedir "/home/user:."
> </Directory>
> -----------------------------
> и т.д. описаны все хосты
>
>
> Это конфиг Nginx:
> -----------------------------
> user www-data;
> worker_processes  4;
> worker_rlimit_nofile 16384;
>
> error_log  /var/log/nginx/error.log error;
> pid        /var/run/nginx.pid;
>
> events {
>         worker_connections  1024;
>         use epoll;
> }
>
> http {
>     include       /etc/nginx/mime.types;
>     default_type  application/octet-stream;
>
>     access_log  /var/log/nginx/access.log;
>     #expires      30d;
>     sendfile        on;
>     tcp_nopush     on;
>     tcp_nodelay        on;
>     client_max_body_size       10m;
>     client_body_buffer_size    16k;
>     proxy_connect_timeout      60s;
>     proxy_send_timeout         60s;
>     proxy_read_timeout         60s;
>     proxy_buffer_size          64k;
>     proxy_buffers              4 32k;
>     proxy_busy_buffers_size    64k;
>     proxy_temp_file_write_size 10m;
>
>     gzip on;
>     gzip_comp_level 3;
>     gzip_proxied any;
>     gzip_min_length  1000;
>     gzip_types application/x-javascript text/css;
>     gzip_disable "MSIE [1-6]\.(?!.*SV1)";
>
>     keepalive_timeout  35;
>
>
>     include /etc/nginx/conf.d/*.conf;
>     include /etc/nginx/sites-enabled/*;
>         log_format  isp '$bytes_sent $request_length';
>         server {
>                 listen 82.200.198.10:80;
>                 server_name example.com www.example.com;
>                 rewrite ^(/manager/.*)$ https://$host$1 permanent;
>                 error_page 404 = @fallback;
>                 location ~*
> ^/(webstat/|awstats|webmail/|myadmin/|manimg/|pgadmin/) {
>                         proxy_pass http://82.200.198.10:81;
>                         proxy_redirect http://example.com:81/ /;
>                         proxy_set_header Host $host;
>                         proxy_set_header X-Forwarded-For
> $proxy_add_x_forwarded_for;
>                         proxy_set_header X-Real-IP $remote_addr;
>                 }
>                 location / {
>                         proxy_pass http://82.200.198.10:81;
>                         proxy_redirect http://example.com:81/ /;
>                         proxy_set_header Host $host;
>                         proxy_set_header X-Forwarded-For
> $proxy_add_x_forwarded_for;
>                         proxy_set_header X-Real-IP $remote_addr;
>                 }
>                 location ~*
> ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {
>                         root /home/user/www/example.com;
>                         access_log /home/httpd-logs/example.com.access.log
> ;
>                         access_log /home/nginx-logs/user isp;
>                 }
>                 location @fallback {
>                         proxy_pass http://82.200.198.10:81;
>                         proxy_set_header Host $host;
>                         proxy_set_header X-Forwarded-For
> $proxy_add_x_forwarded_for;
>                         proxy_set_header X-Real-IP $remote_addr;
>                 }
>         }
> -----------------------------
> и т.д. в таком же ключе еще 100 хостов прописано.
>
> Изменял по разному в конфиге Nginx следующие ключи:
> worker_connections
> worker_processes
> sendfile
> proxy_connect_timeout
> proxy_send_timeout
> proxy_read_timeout
> gzip_proxied
> gzip_comp_level
> ничего не приводит к заметному результату, как тормозил у медленных
> клиентов
> так и тормозит.
>
> Apache Server Status показывает максимум до 10 Request, то есть заметно что
> нагрузка на него упала (раньше бывало до 20-25), но почему nginx стал так
> медленно работать?
>
> в Top-е nginx почти не вылезает иногда до 2% CPU кушает, в основном кушают
> CPU процессы Apache 3-4 штуки бывает под 30-70% но всего лишь на несколько
> секунд и MySQL обычно кушает 20-30% , бывает 50-70% но тоже на считанные
> секунды. В целом RAM и CPU не загружены когда проявляются тормоза.
> Складывает такое ощущение, что nginx зажат какими то лимитами и не может
> быстро раздавать статику, хотя ресурсы сервера еще позволяют это сделать.
>
> У меня админ уволился, найти грамотного не могу, вот пытаюсь сам
> поддерживать сервер...
> Огромная просьба к бывалым хостерам - помогите советом!!!
>
> Posted at Nginx Forum:
> http://forum.nginx.org/read.php?21,231602,231602#msg-231602
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx-ru
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-ru/attachments/20121012/3c41b5d3/attachment-0001.html>


Подробная информация о списке рассылки nginx-ru