February 22, 2011 02:30PM
Приветствую всех!
Никогда не думал, что придется писать сюда. До этого момента nginx никогда не подводил, да и сейчас нет уверенности, что дело в нем. Вобщем, ситуация: nginx в качестве прокси для apache2 mpm-prefork (fastcgi гораздо медленнее, на низких нагрузках, а больших не предвидится) и mod_mem_cache. Также установлен MySQL 5.1 с поддержкой MyISAM и InnoDB с большим объемом оперативной памяти выделенной под кэширование таблиц. Но дело точно не в нем, так как многочисленные тесты показывают, что скорость обработки максимального комплекса запросов составляет меньше 10мс. В итоге, среднее время генерации страницы составляет 2 секунды.

В какой-то момент времени я начал экспериментировать с различными директивами nginx. В частности, после добавления директив "timer_resolution 100ms;", "use epoll;", "sendfile on;", "tcp_nopush on;", "keepalive_timeout 5;" и
"tcp_nodelay on;" - время генерации страниц упало до 0,4 секунды. Сначала была мысль, что это кэш, но для тестирования я менял данные в базе напрямую и страницы формировались с корректными данными.

Однако, после перезагрузки сервера все вернулось на круги своя, - 2 секунды, на легких страницах - 1,5 секунды.

В процессе настройки nginx никакие другие сервисы не подвергались конфигурированию. Визуально, да и по дате редактирования конфигурационные файлы те же, на которых недавно было 0,4 секунды.

Собственно, вопрос обычный - куда копать?
PS.: Я понимаю, что nginx только отдает статику и скидывает на бэкенд генерацию контента. Но кроме nginx ничто не было затронуто. И, по всей видимости это какой-то необъяснимый глюк производительности apache2, но все же хотелось услышать мнения экспертов.


Привожу свои конфиги:
cat /etc/nginx/nginx.conf
user www-data;
worker_processes 2;
worker_priority -5;

timer_resolution 100ms;

error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;

events {
worker_connections 1024;
use epoll;
}

http {
upstream backend {
server 127.0.0.1:8080;
}

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

access_log off;

sendfile on;
tcp_nopush on;

keepalive_timeout 5;
tcp_nodelay on;

gzip on;
gzip_buffers 4 8k;
gzip_comp_level 3;
gzip_proxied any;
gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}

cat /etc/nginx/sites-enabled/example.org
server {
listen 80;
server_name example.org;
root /var/www/example.org;
index index.php;

location / {
proxy_pass http://backend;
include /etc/nginx/proxy.conf;
open_file_cache max=1024 inactive=600s;
open_file_cache_valid 2000s;
open_file_cache_min_uses 1;
open_file_cache_errors on;
}

location = /favicon.ico {
log_not_found off;
access_log off;
}

location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}

access_log /var/log/nginx/example.org_access.log;
error_log /var/log/nginx/example.org_error.log;

error_page 403 /403.html;

error_page 404 /404.html;

location ~* \.(jpg|jpeg|gif|png|ico|css|bmp|swf|js)$ {
root /var/www/example.org/;
}

## Disable viewing .htaccess & .htpassword
location ~ /\.ht {
deny all;
}
}

cat /etc/nginx/proxy.conf
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;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
Subject Author Posted

Падение производительности nginx

zortexx February 22, 2011 02:30PM

Re: Падение производительности nginx

Andrew Sitnikov February 22, 2011 03:46PM

Re: Падение производительности nginx

zortexx February 22, 2011 04:32PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 265
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