Дек 08 2009

Тюнинг nginx.

Привлекательность nginx обеспечивают, его схема работы, без форка как у Apache, за счет этого потрясающая скорость отдачи статики и кеширование, которое резко снимает нагрузку с системы, что позволяет максимально приблизится к «золотой мечте» сисадмина — обслукживание одновременных 1000 соединений. А модуль проксирования умеет замечательно балансировать нагрузку и определять отказы бекэндов. Есть еще много привлекательных возможностей у nginx, но упомянутые выше возможности дают nginx неоспоримые приимущества.

Мой конфигурационный файл, я работаю с php-fpm, выглядит так:

worker_processes  1;
events {
#epoll я использую там, где стоит Линукс
#        use epoll;
#Под FreeBSD обязательно kqueue
          use kqueue;
          worker_connections  1024;
}
 
http {
    include       mime.types;
    default_type  application/octet-stream;
#Организовываем кеш для FastCGI сервера, обязательно на том же разделе, что и временные файлы nginx
    fastcgi_cache_path /var/tmp/nginx/fcgi-cache/ levels=1:2   keys_zone=one:10m;
#Используем sendfile, но осторожно, если надо отдавать большие файлы, то sendfile случается вредит
    sendfile        on;
    keepalive_timeout  65;
#Расширяем буфера отдачи
    output_buffers   32 512k;
#Ограничиваем размер сегмента отправляемой за одну
#блокируемую отдачу
    sendfile_max_chunk  128k;
#Буфер отдачи которы используется для обрабатываемых данных
    postpone_output  1460;
#Размер хеша для доменных имен.
    server_names_hash_bucket_size 64;
#Размер данных принемаемых post запросом
    client_max_body_size 15m;
    server {
        listen       80;
        server_name  hilik.org.ua www.hilik.org.ua;
        location / {
            root   /var/www/hilik.org.ua;
            index  index.php index.html index.htm;
        location ~ \.php$ {
                root           /var/www/hilik.org.ua;
#PHP-FPM слушает на Unix сокете
                fastcgi_pass   unix:/tmp/php.sock;
#Использовать cache зона one
                fastcgi_cache  one;
#Помещать страницу в кеш, после 3-х использований. Меньшее число вызвало у меня труднообъяснимые глюки
# на формах регистрации
                fastcgi_cache_min_uses 3;
#Кешировать перечисленные ответы 
                fastcgi_cache_valid 200 301 302 304 5m;
#Формат ключа кеша - по этому ключу nginx находит правильную страничку
                fastcgi_cache_key "$request_method|$host|$request_uri";
#Если не использовать эту опцию - то в форумах все будут сидеть под именем первого вошедшего на форум
                fastcgi_hide_header "Set-Cookie";
#Этот запрос заставит nginx кешировать все что проходит через него
                fastcgi_ignore_headers "Cache-Control" "Expires";
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  /var/www/hilik.org.ua$fastcgi_script_name;
                include        fastcgi_params;
        }
 
    }
}

После внедрения кеширования, скорость отдачи сайта выросла в несколько раз.

Добавить в закладки:

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Украинская Баннерная Сеть