Active connections > 6K Nginx

12
Jake Foley
На сайте с 16.08.2008
Offline
151
3834

Добрый вечер уважаемые пользователи.

Хочу обратиться к вам за советом.

Последнее время сайт (сервис хостинга картинок) начал жутко тормозить.

Собственно не особо то и удивительно, канал загружен на 800мбит - соответственно сервер "хорошенько" трудится.

Но проблема именно в Nginx, все начинает тормозить когда:

Active connections достигают 8000-13000

Конфигурацие сервера: 8GB / Intel Core Quad 8400.

Есть ли совет как можно решить проблему с Nginx, быть может кто-то имеет опыт?

Администратор работает над проблемой :) но пока решение не найдено (

V
На сайте с 05.08.2007
Offline
87
#1
Jake Foley:

Есть ли совет как можно решить проблему с Nginx

Вы привели слишком мало информации. Где упоминание об ОС?, Где остальные графики, например, распределение памяти и дисковой активности? В конце концов, где конфиг nginx?

Так что упоминание об отпуске телепатов в Вашем случае вполне уместно.

Странно, что в этот форум пишете Вы, а не Ваш админ.

Посоветуйте ему почитать на досуге http://sysoev.ru/, http://forum.nginx.org/list.php?21, и, собственно, тему, ради которой все это писалось: http://forum.nginx.org/read.php?21,202591

С уважением, Victor (http://adm-lib.ru)
Jake Foley
На сайте с 16.08.2008
Offline
151
#2

CentOS

Для начала предоставляю графики:

Конфиг Nginx:


user nginx;
worker_processes 16;
worker_rlimit_nofile 50000;
#timer_resolution 100ms;

error_log /var/log/nginx/error.log;
#error_log /var/log/nginx/error.log notice;
#error_log /var/log/nginx/error.log info;

pid /var/run/nginx.pid;



#----------------------------------------------------------------------
# Events Module
#
# http://wiki.codemongers.com/NginxEventsModule
#
#----------------------------------------------------------------------

events {
worker_connections 82000;
use epoll;
}


#----------------------------------------------------------------------
# HTTP Core Module
#
# http://wiki.codemongers.com/NginxHttpCoreModule
#
#----------------------------------------------------------------------

http {
include /etc/nginx/mime.types;
default_type application/octet-stream;

log_format main '$remote_addr - $remote_user [$time_local] $request '
'"$status" $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

#access_log /var/log/nginx/access.log main;


log_format trafctr '$msec $status $request_length $bytes_sent';
#access_log /var/log/nginx/traffic_vhost trafctr;


sendfile on;
tcp_nopush on;
tcp_nodelay on;


directio 2m;
output_buffers 1 2m;
aio on;

#keepalive_timeout 0;
keepalive_timeout 30;
reset_timedout_connection on;

gzip off;
gzip_buffers 16 8k;
#gzip_min_length 1100;
gzip_comp_level 5;
gzip_disable "Mozilla/4" "Mozilla/4\.0[678]" "MSIE [1-6].(?!.*SV1)";
gzip_types text/css text/xml application/x-javascript text/plain image/gif;

client_max_body_size 16m;
server_names_hash_max_size 128;
server_names_hash_bucket_size 128;
large_client_header_buffers 8 8k;

open_file_cache max=5000 inactive=30s;
open_file_cache_valid 30s;
open_file_cache_min_uses 1;
open_file_cache_errors off;

client_header_timeout 1m;
client_body_timeout 2m;
send_timeout 1m;

proxy_send_timeout 240;
proxy_read_timeout 240;
fastcgi_send_timeout 240;
fastcgi_read_timeout 240;


recursive_error_pages off;

fastcgi_temp_path /var/lib/nginx/tmp/tmpfs/fastcgi;
fastcgi_cache_path /var/lib/nginx/tmp/tmpfs/fastcgi_cache levels=2:2 keys_zone=IMG:256m inactive=6h max_size=3970M; #3870
fastcgi_cache_key $server_name$request_uri;
fastcgi_cache_valid 200 302 301 404 2d;
# fastcgi_cache_valid 301 1d;
#fastcgi_cache_valid any 2d;
fastcgi_cache_min_uses 1;
fastcgi_ignore_headers Expires Cache-Control;
# fastcgi_cache IMG;
# Load config files from the /etc/nginx/conf.d directory
#include /etc/nginx/conf.d/*.conf;

#
# The default server
#
log_format isp '$bytes_sent $request_length';
server {
listen 91.197.128.226:80;
listen 91.197.128.225:80;
server_name 91.197.128.226 91.197.128.225;
rewrite .* http://xmages.net/? permanent;
}
server {
listen 91.197.128.226:80 default sndbuf=64k rcvbuf=32k deferred;
listen 91.197.128.225:80;
server_name xmages.net www.xmages.net;

location ~ \00 {
deny all;
}

include /etc/nginx/xmages.net.conf;

rewrite ^(/manager/.*)$ https://$host$1 permanent;
location ~* ^/(webstat/|awstats|webmail/|myadmin/|manimg/) {
proxy_pass http://91.197.128.226:8080;
proxy_redirect http://xmages.net:8080/ /;
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)$ {
root /home/www/dymytrov/data/www/xmages.net;
access_log off; #/home/www/httpd-logs/xmages.net.access.log;
# error_page 404 = @fallback;
error_page 404 = /home/www/dymytrov/data/www/xmages.net/view-image.htm;
}
location / {
error_page 404 = /home/www/dymytrov/data/www/xmages.net/view-image.htm;
proxy_pass http://91.197.128.226:8080;
proxy_redirect http://xmages.net:8080/ /;
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 @fallback {
error_page 404 = /home/www/dymytrov/data/www/xmages.net/view-image.htm;
proxy_pass http://91.197.128.226:8080;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
}

}

И инклуд /etc/nginx/exampleimghost.net.conf

rewrite "^/out\.php/([a-z]{1})(.*)$" /out.php?$1=$2&$args last;

rewrite ^/show\.php/(.*)$ /show.php?img=$1 last;
rewrite ^/view\.php/(.*)$ /view.php?img=$1 last;
rewrite "^/images\.php/([a-z]{1})(.*)$" /images.php?$1=$2&$args last;

location ~* ^/out\.php {
fastcgi_pass 127.0.0.1:9001;
#fastcgi_pass unix:/var/www/fpm/php-fpm_xmages.socket;

root /home/www/dymytrov/data/www/xmages.net;

include fastcgi_params.default;

fastcgi_index index-main.php;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 240;
fastcgi_read_timeout 240;

index index-main.php;
set $srv_root /home/www/dymytrov/data/www/xmages.net;

fastcgi_param DOCUMENT_ROOT $srv_root;
fastcgi_param SCRIPT_FILENAME $srv_root$fastcgi_script_name;
fastcgi_param PATH_TRANSLATED $srv_root$fastcgi_script_name;


access_log /home/www/httpd-logs/xmages.net.access.log;
access_log /var/log/nginx/traffic_vhost trafctr;
#error_page 404 = @fallback;
error_page 404 = /home/www/dymytrov/data/www/xmages.net/view-image.htm;

fastcgi_cache IMG;

#aio on;
#directio 512;
#output_buffers 1 128k;
}

location ~ /adminz/.*.php$ {
fastcgi_pass 127.0.0.1:9000;
#fastcgi_pass unix:/var/www/fpm/php-fpm.socket;

root /home/www/dymytrov/data/www/xmages.net;

include fastcgi_params.default;

fastcgi_index index-main.php;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 240;
fastcgi_read_timeout 240;

index index-main.php;
set $srv_root /home/www/dymytrov/data/www/xmages.net;

fastcgi_param DOCUMENT_ROOT $srv_root;
fastcgi_param SCRIPT_FILENAME $srv_root$fastcgi_script_name;
fastcgi_param PATH_TRANSLATED $srv_root$fastcgi_script_name;


access_log /home/www/httpd-logs/xmages.net.access.log;
access_log /var/log/nginx/traffic_vhost trafctr;
error_page 404 = @fallback;

}


location ~ .php$ {
fastcgi_pass 127.0.0.1:9001;
#fastcgi_pass unix:/var/www/fpm/php-fpm_xmages.socket;

root /home/www/dymytrov/data/www/xmages.net;

include fastcgi_params.default;

fastcgi_index index-main.php;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 240;
fastcgi_read_timeout 240;

index index-main.php;
set $srv_root /home/www/dymytrov/data/www/xmages.net;

fastcgi_param DOCUMENT_ROOT $srv_root;
fastcgi_param SCRIPT_FILENAME $srv_root$fastcgi_script_name;
fastcgi_param PATH_TRANSLATED $srv_root$fastcgi_script_name;


access_log /home/www/httpd-logs/xmages.net.access.log;
access_log /var/log/nginx/traffic_vhost trafctr;
#error_page 404 = @fallback;
error_page 404 = /home/www/dymytrov/data/www/xmages.net/view-image.htm;

}


N
На сайте с 06.05.2007
Offline
419
#3

линукс ставил?

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

Кнопка вызова админа ()
Jake Foley
На сайте с 16.08.2008
Offline
151
#4

Вот еще это есть:

Что-то дополнительно сложновато достать, по крайней мере сейчас (

N
На сайте с 06.05.2007
Offline
419
#5

Что-то на новом munin не сразу понял. Это все-таки линукс?

Jake Foley
На сайте с 16.08.2008
Offline
151
#6

Да, в 3м посте было указано CentOS

iostat -x 3

hostmaster
На сайте с 26.05.2009
Offline
26
#7

заметный iowait вы уверены что не упираетесь в производительность HDD ?

I'm lost without tcpdump
N
На сайте с 06.05.2007
Offline
419
#8

да, на графике есть iowait и он приличный.

Попробуйте оценить загрузку только диска в процентах от максимальной

Это покажет команда iostat -x 3 и колонка %util

Если загрузка приближается к 100%, уверенно можно сказать, что узкое место в дисках.

А active connections не узкое место. Вон у вас 19 числа их было 20 тыс.

В munin для этой цели тоже есть плагин, но он нестандартный и скорее всего не поставили. Называется diskstat_latency

Jake Foley
На сайте с 16.08.2008
Offline
151
#9

На скрине выше iostat показывает 97%

Jake Foley добавил 26.07.2011 в 13:44

Есть ли возможность собрать информацию какой файл чаще всего использьзуется/загружается ? И допустим вывести в виде статистики

Что-то мне подсказывает что это парочка порно картинок, а последнее время у меня просто нет возможности их чистить :)

N
На сайте с 06.05.2007
Offline
419
#10

как-то криво вставили картинку. она только вам видна.

ну раз по вашим словам 97% на каком-то из hdd, надо в первую очередь думать как ее снизить.

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

netwind добавил 26.07.2011 в 13:50

Jake Foley:
Есть ли возможность собрать информацию какой файл чаще всего использьзуется/загружается ? И допустим вывести в виде статистики

как и обычно анализатором логов вебсервера.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий