Заметка Оптимизация Nginx для максимальной производительности


akhomlyuk

Ищу модераторов
Администратор
Сообщения
748
Симпатии
370
#1
NGINX_logo_rgb-01.png
Конфиг веб сервера Nginx с пояснениями для достижения максимальных показателей производительности.
Предварительно сделать бекап конфига
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf_
И поехали править!
NGINX:
# число равное количеству ядер процессора (по умолчанию 1)
worker_processes auto; # в последних версиях веб сервера рекомендуется оставлять auto

# ограничение на максимальное число открытых файлов (RLIMIT_NOFILE) для рабочих процессов.
# максимальное количество на сервере обычно устанавливается операционной системой.
worker_rlimit_nofile 100000;

# регистрировать только критические ошибки
error_log /var/log/nginx/error.log crit;

# контекст конфигурационного файла, в котором указаны директивы, которые влияют на обработку подключений
events {
   # максимальное кол-во = worker_connections * worker_processes
   # максимальное число соединений, которые одновременно может открыть рабочий процесс (worker_process)
   worker_connections 4000;

   # рабочий процесс будет принимать столько соединений, сколько сможет.
   multi_accept on; # по умолчанию off
}

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

# копирует данные между файловыми дескрипторами из ядра
# быстрее чем read() + write()
# разрешает или запрещает использовать sendfile()
sendfile on; # по умолчанию off

# параметр включаются только при использовании sendfile
#  позволяет передавать заголовок ответа и начало файла в одном пакете
# быстрее, чем передавать кусочками
tcp_nopush on;

# Не пишет в буфер отправленные данные
tcp_nodelay on;

# Включение gzip сжатия
gzip on;
gzip_min_length 10240;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/json application/xml;
gzip_disable msie6;

# разрешить серверу закрывать "зависшие" соединения, освобождает память
reset_timedout_connection on;

# Время таймаута -- по умолчанию 60
client_body_timeout 10;

# закрытие соединения после этого времени -- по умолчанию 75
keepalive_timeout 30;
Bash:
nginx -t
nginx -s reload
systemctl restart nginx
concurrency.png
 
Последнее редактирование:

akhomlyuk

Ищу модераторов
Администратор
Сообщения
748
Симпатии
370
#3
@Begemot, спасибо, поправил, конечно надо со слешами, без них не взлетит :)
 

akhomlyuk

Ищу модераторов
Администратор
Сообщения
748
Симпатии
370
#4
Тут еще вот эта строка спорная - error_log /var/log/nginx/error.log crit;
Писать только критические логи, конечно если писать все подряд, то будет чуточку медленнее, но логи крайне важны.
Совсем уж для "оптимизаторов"
 
Последнее редактирование:

Begemot

Сообщения
39
Симпатии
13
#5
Она по дефолту такая, пусть так пока и остается))
 

akhomlyuk

Ищу модераторов
Администратор
Сообщения
748
Симпатии
370
#6
@Begemot, вот так по умолчанию
NGINX:
Синтаксис: error_log файл [уровень[];
Умолчание:
error_log logs/error.log error;
Контекст: main, http, mail, stream, server, location
 

Begemot

Сообщения
39
Симпатии
13
#7
Значит это веста при установке правит.