Re: Рекомендации по снижению загрузки процессора

nginx at teratelecom.ru nginx at teratelecom.ru
Tue Dec 2 07:53:52 MSK 2008


> А конфиг?
> Есть ли sendfile?

Я думал напишут общие рекомендации...

sendfile был включен (вот не догодался попробовать выключить, стормозил...)
большое число запросов шло именно на SSL, тоесть остальные сайты или имели
незначительный поток или были отключены. 503 почти небыло, лимит был
поставлен с запасом, но сами строчки проверки были. Общий трафик менялся,
максимум был 60 мбит/с (проксирование порядка 20 мбит/с, остальное
статика). load average взлетал до 20, при этом отдаваемый поток падал.
Найти корреляцию с графиками числа запросов к апачам или количеством
одновременных соединений с апачами не получается.
Через несколько часов я включил почти все сайты, SSL-ные состовляли
значительную часть, но уже не приблиаясь к 100 процентам. nginx выдал 80
мбит с умененным load average.

И вопрос, если я дополнительно стану использовать limit_req это сильно
скажется на загрузке процессора, или лучше при необходимости использовать
фичи в iptables ?
Число воркеров менял, не влияло никак (изначально 20 стояло). зотя
возможно чуть полегче стало с уменьшением их до 8.



user nginx nginx;
worker_processes 8;

error_log /var/log/nginx/error_log info;

worker_rlimit_nofile	8192;

events {
	worker_connections  8192;
	use epoll;
}

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

	client_header_timeout	61;
	client_body_timeout	62;
	send_timeout		63;
	client_max_body_size 	10m;

	connection_pool_size		256;
	client_header_buffer_size	1k;
	large_client_header_buffers	4 2k;
	request_pool_size		4k;

	gzip on;
	gzip_min_length	1100;
	gzip_buffers	4 8k;
	gzip_types	text/plain;

	output_buffers	1 32k;
	postpone_output	1460;

	sendfile	on;
	tcp_nopush	on;
	tcp_nodelay	on;

	keepalive_timeout	75 20;

	ignore_invalid_headers	on;

	index index.html;

        proxy_read_timeout 65;
	proxy_send_timeout 11;
	proxy_connect_timeout 10;
	proxy_next_upstream error;

#	upstream  apache0  {
#	    ip_hash;
#	    server 172.29.8.4:80 fail_timeout=60s;
#	    server 172.29.8.5:80 fail_timeout=60s;
#	}

	log_format  my_log_format  '$msec $request_time '
	    '$remote_addr:$remote_port $connection $uid_got $uid_set '
	    '$status $request_length $body_bytes_sent '
	    '"$request" "$http_referer"';

        log_format  stat_log_format  '$msec $request_time
$remote_addr:$remote_port '
	    '$status $uid_got $uid_set $server_name$request_uri $http_referer '
            '$upstream_addr $upstream_response_time $upstream_status
$time_local "$http_user_agent"';
        log_format  static_log_format  '$msec $request_time
$remote_addr:$remote_port '
	    '$status $server_name$request_uri';

        limit_zone one $binary_remote_addr 10m;
	limit_conn one 32;
        limit_zone too $server_name 1m;

	userid          on;
	userid_name     stat_uid;
	userid_domain   none;
	userid_path     /;
#	userid_expires  365d;

	include /etc/nginx/include/*;
}

Пример для хоста
server {
    listen		81.176.70.170;
    server_name 	cp.4game.ru ;
    proxy_next_upstream error timeout invalid_header http_500 http_503;
    rewrite   ^/(.*)   https://cp.4game.ru/$1 permanent;
}
server {
    listen		81.176.70.170:443 default;
          ssl                  	on;
          ssl_certificate    	/etc/nginx/ssl/cp.4game.ru.pem;
          ssl_certificate_key	/etc/nginx/ssl/cp.4game.ru.pem;
          ssl_session_timeout	5m;
          ssl_protocols  	SSLv2 SSLv3 TLSv1;
	  ssl_ciphers  		ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
	  ssl_prefer_server_ciphers   on;
    server_name		cp.4game.ru ;
    charset		UTF8;
    access_log 		/var/log/nginx/cp.4game.ru-access_log combined;
#    error_log 		/var/log/nginx/cp.4game.ru-error_log;

    location ~* (^/.htaccess.*|admin\/(admin.php.*)$) { deny all; }
        location ~* ^(.+\.(php|php3|html)|.*/)$ {
        proxy_pass        	http://apache0;
        proxy_set_header        Host cp.4game.ru;
        proxy_set_header   	X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_set_header  	X-Real-IP  $remote_addr;
        index                   index.php index.html;
	limit_conn		too 120;
        access_log 		/var/log/nginx/stat_log stat_log_format;
	error_page	503	/503.html;
    }
    location = /503.html {
	internal;
	root /data/test/htdocs;
	access_log 		/var/log/nginx/stat_log stat_log_format;
    }
    location ~ / {
        root   /data/cp.4game.ru/htdocs;
#        access_log 		/var/log/nginx/static_log static_log_format;
    }
}

Остальные хосты аналогичные.


> 1 декабря 2008 г. 18:57 пользователь Volkov Oleg
> <volkov at teratelecom.ru>написал:
>
>> В сообщении от Monday 01 December 2008 17:59:49 Anton Yuzhaninov
>> написал(а):
>> > On 01.12.2008 17:19, Volkov Oleg wrote:
>> > > Какие могут быть рекомендации по снижению загрузки процессора от
>> nginx
>> ?
>> > >
>> > > При трафике 60 Mbit/s машине уже плохо.
>> > >
>> > > Использую nginx в качестве фронтенда, проксирование на апачи - 20
>> мбит/с,
>> > > остальное статика с scsi массивов.
>> >
>> > А что top показывает?
>> >
>> > Вполне возможно что процессор грузит ядро.
>> >
>> > Если есть какой либо файрвол, то лучше его отключить.
>> > Для FreeBSD можно увеличить net.inet.tcp.tcbhashsize
>>
>> Система Linux 2.6
>> Load Average был до 20
>> idle был 0
>> system был умеренным, грузило в основном user процессы nginx

---
С уважением,
Волков Олег.
Терабит Телеком.







More information about the nginx-ru mailing list