ответ от апстрима может в некоторых случаях помещаться во временный файл, особенно, если сервер отдал контент быстро, а пользователь забирает медленно. и узким местом может являться жесткий диск.
Есть сервер хостинга 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
# 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
<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;
Изменял по разному в конфиге 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 зажат какими то лимитами и не может
быстро раздавать статику, хотя ресурсы сервера еще позволяют это сделать.
У меня админ уволился, найти грамотного не могу, вот пытаюсь сам
поддерживать сервер...
Огромная просьба к бывалым хостерам - помогите советом!!!