Welcome! Log In Create A New Profile

Advanced

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

October 10, 2012 03:45PM
Есть сервер хостинга 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 зажат какими то лимитами и не может быстро раздавать статику, хотя ресурсы сервера еще позволяют это сделать.

У меня админ уволился, найти грамотного не могу, вот пытаюсь сам поддерживать сервер...
Огромная просьба к бывалым хостерам - помогите советом!!!
Subject Author Posted

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

ProxyKZ October 10, 2012 03:45PM

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

ProxyKZ October 11, 2012 12:54AM

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

showjumper October 11, 2012 01:16AM

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

ProxyKZ October 11, 2012 02:19AM

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

Andrey N. Oktyabrski October 11, 2012 02:40AM

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

Anes Mukhametov October 11, 2012 03:16AM

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

ProxyKZ October 11, 2012 03:29PM

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

ProxyKZ October 12, 2012 06:13AM

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

Andrey Repin October 13, 2012 02:10AM

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

Илья Шипицин October 12, 2012 06:54AM

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

ProxyKZ October 13, 2012 12:34AM

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

ProxyKZ October 19, 2012 01:06AM

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

Илья Шипицин October 19, 2012 01:56AM

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

ProxyKZ October 19, 2012 09:19AM

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

Илья Шипицин October 20, 2012 09:44AM

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

ProxyKZ October 25, 2012 09:50AM

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

Илья Шипицин October 20, 2012 09:54AM

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

Pavel V. October 21, 2012 03:46AM

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

Pavel V. October 21, 2012 04:50AM

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

ProxyKZ October 25, 2012 10:35AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 307
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready