Настройка NGINX для достижения наилучшей производительности

Скачать Настройка NGINX для достижения наилучшей производительности
Недавно искали:

Itnull

Команда форума
Администратор
Регистрация
22.05.13
Сообщения
25.466
Реакции
9.448
Веб-сайт
itnull.me
  • Автор темы
  • Администратор
  • Модер.
  • Команда форума
  • #1
Для этой конфигурации вы можете использовать веб-сервер, который вам нравится, я решил, поскольку работаю в основном с ним, использовать nginx.

Правильно настроенный nginx может обрабатывать до 400K - 500K запросов в секунду (кластеризованный). Большинство серверов способны обрабатывать от 50K до 80K (некластеризованных) запросов в секунду и 30% загрузка процессора.

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

Создайте резервную копию исходных конфигураций и можете приступать к их перенастройке. Вам нужно будет открыть файл nginx.conf по адресу /etc/nginx/nginx.conf с помощью вашего любимого редактора.

Код:
nano /etc/nginx/nginx.conf
NGINX:
# вы должны установить рабочие процессы на основе ваших ядер процессора, nginx не выиграет, если установит большее количество.
worker_processes auto;
# последние версии вычисляют его автоматически

# количество файловых дескрипторов, используемых для nginx
# ограничение на максимальное количество FD на сервере обычно устанавливается ОС.
# если вы не установите FD, то будут использоваться настройки ОС, которые по умолчанию равны 2000
worker_rlimit_nofile 100000;
# регистрировать только критические ошибки
error_log /var/log/nginx/error.log crit;
# предоставляет контекст конфигурационного файла, в котором задаются директивы, влияющие на обработку соединений.
events {
    # определяет, сколько клиентов будет обслуживаться на одного рабочего
    # max clients = worker_connections * worker_processes
    # max clients также ограничено количеством сокетных соединений, доступных в системе (~64k)
    worker_connections 4000;

    # оптимизирован для обслуживания многих клиентов каждым потоком, что важно для linux -- для тестовой среды
    use epoll;

    # принимать как можно больше соединений, при слишком низком значении может переполнить рабочие соединения -- для тестовой среды
    multi_accept on;
}

http {
    # кэш-информация о FD, часто используемых файлах
    # может увеличить производительность, но вам нужно проверить эти значения.
    open_file_cache max=200000 inactive=20s;
    open_file_cache_valid 30s;
    open_file_cache_min_uses 2;
    open_file_cache_errors on;

    # для увеличения ввода-вывода (I/O) на HDD мы можем отключить журналы доступа
    access_log off;

    # копирует данные между одним FD и другим из ядра
    # быстрее, чем read() + write()
    sendfile on;

    # отправлять заголовки одним куском, это лучше, чем отправлять их по одному
    tcp_nopush on;

    # уменьшение объема данных, которые необходимо передавать по сети -- для тестовой среды
    gzip on;
    # gzip_static on;
    gzip_min_length 10240;
    gzip_comp_level 1;
    gzip_vary on;
    gzip_disable msie6;
    gzip_proxied expired no-cache no-store private auth;
    gzip_types
        # text/html is always compressed by HttpGzipModule
        text/css
        text/javascript
        text/xml
        text/plain
        text/x-component
        application/javascript
        application/x-javascript
        application/json
        application/xml
        application/rss+xml
        application/atom+xml
        font/truetype
        font/opentype
        application/vnd.ms-fontobject
        image/svg+xml;

    # разрешить серверу закрывать соединение на не отвечающем клиенте, это освободит память
    reset_timedout_connection on;

    # таймаут запроса - по умолчанию 60
    client_body_timeout 10;

    # если клиент перестал отвечать, освободить память -- по умолчанию 60
    send_timeout 2;

    # сервер закроет соединение через это время - по умолчанию 75
    keepalive_timeout 30;

    # количество запросов, которые клиент может сделать в режиме keep-alive -- для тестовой среды
    keepalive_requests 100000;
}

Теперь вы можете сохранить конфигурацию и выполнить следующую команду

Код:
nginx -s reload
/etc/init.d/nginx restart

Если вы хотите сначала протестировать конфигурацию, вы можете выполнить команду

Код:
nginx -t
/etc/init.d/nginx configtest

Просто из соображений безопасности

Код:
server_tokens off;
 
Последнее редактирование:
Назад
Сверху Снизу