nginx перестает отвечать нагружая IO на 100%
iprok
nginx-forum at nginx.us
Wed Jan 28 19:47:05 UTC 2015
Есть сервер с несколькими десятками сайтов на Debian Wheezy amd64. nginx
1.6.2 отсюда
deb http://nginx.org/packages/debian/ wheezy nginx
Симптоматика следующая. Сначала приходит письмо от заббикса о превышение
порога IO:
CPU iowait time (hostname:system.cpu.util[,iowait]): 24.95 %
Через несколько секунд перестают отвечать все сайты. nginx становится
недоступен. Смотрю iotop, все процессы nginx выглядят так (disk read, disk
write, swap in, io):
0.00 B/s 0.00 B/s 0.00 % 99.99 % nginx: worker process
Честно говоря совершенно загадочная для меня ситуация, чтоб IO было большое,
но ни записи ни чтения не происходило. Что это может быть? В error.log
ничего за этот период нет. Вообще в логах не вижу ничего криминального.
Места везде с запасом.
По памяти:
free -m
total used free shared buffers cached
Mem: 8002 7869 132 0 476 6001
-/+ buffers/cache: 1392 6610
Swap: 8191 0 8191
nginx.conf:
user nginx;
worker_processes 4;
worker_rlimit_nofile 200000;
error_log /var/log/nginx/error.log error;
events {
worker_connections 100000;
# use epoll;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
server_names_hash_max_size 2048;
server_names_hash_bucket_size 64;
server_tokens off;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
proxy_cache_path /var/cache/nginx keys_zone=one:50m;
limit_req_zone $binary_remote_addr zone=agency:1m rate=20r/m;
limit_req_zone $binary_remote_addr zone=a7:1m rate=3r/s;
limit_req_zone $binary_remote_addr zone=default:1m rate=10r/s;
limit_req_zone $binary_remote_addr zone=global:10m rate=500r/s;
limit_req zone=global burst=500;
log_format main '$remote_addr - $remote_user [$time_local] "$request"
'
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent"';
log_format proxy '$http_host == $remote_addr - $remote_user
[$time_local] "$request"'
'$status $body_bytes_sent "$http_referer" ';
log_format global '$http_host == $remote_addr - $remote_user
[$time_local] "$request" '
'$status $body_bytes_sent "$http_referer"
"$http_user_agent" ';
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 60;
gzip on;
gzip_types text/css application/x-javascript;
gzip_vary on;
reset_timedout_connection on;
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;
proxy_set_header Connection close;
proxy_set_header Range "";
proxy_pass_header Content-Type;
proxy_pass_header Last-Modified;
proxy_pass_header Expires;
client_max_body_size 50m;
large_client_header_buffers 16 16k;
client_body_buffer_size 256k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 300;
proxy_buffer_size 64k;
proxy_buffers 16 64k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
access_log /var/log/nginx/access.log global buffer=8k;
server {
listen <serverip>:80 default_server;
return 444;
}
server {
listen 127.0.0.1:80 default_server;
location /nginx_status {
stub_status on;
access_log off;
}
}
include sites-enabled/*;
include deploy-enabled/*;
}
В настройках виртуальных хостов никаких особенных настроек нет: location,
root, access_log, error_log, proxy_pass.
Posted at Nginx Forum: http://forum.nginx.org/read.php?21,256316,256316#msg-256316
Подробная информация о списке рассылки nginx-ru