62 lines
5.0 KiB
Markdown
62 lines
5.0 KiB
Markdown
|
---
|
|||
|
aliases:
|
|||
|
tags:
|
|||
|
- зрелость/🌱
|
|||
|
date:
|
|||
|
- - 2024-04-07
|
|||
|
zero-link:
|
|||
|
- "[[00 Nginx]]"
|
|||
|
parents:
|
|||
|
linked:
|
|||
|
link: https://struchkov.dev/blog/ru/nginx-optimization/#%D0%BE%D0%BF%D1%82%D0%B8%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F-%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B-%D1%81%D0%BE%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9
|
|||
|
---
|
|||
|
Начнем оптимизацию с основных параметров, которые отвечают за количество обрабатываемых соединений и сроки их поддержания.
|
|||
|
|
|||
|
```nginx
|
|||
|
worker_processes auto;
|
|||
|
worker_priority -2;
|
|||
|
...
|
|||
|
events {
|
|||
|
worker_connections 2048;
|
|||
|
multi_accept on;
|
|||
|
}
|
|||
|
...
|
|||
|
http {
|
|||
|
...
|
|||
|
keepalive_timeout 45;
|
|||
|
reset_timedout_connection on;
|
|||
|
client_body_timeout 35;
|
|||
|
client_header_timeout 12;
|
|||
|
send_timeout 30;
|
|||
|
...
|
|||
|
client_body_buffer_size 10K;
|
|||
|
client_header_buffer_size 1k;
|
|||
|
client_max_body_size 8m;
|
|||
|
large_client_header_buffers 4 4k;
|
|||
|
...
|
|||
|
}
|
|||
|
```
|
|||
|
|
|||
|
`worker_processes` - Определяет количество рабочих процессов. Обычно, выставляют равному числу ядер, но в новых версиях его лучше устанавливать в auto. По умолчанию 1.
|
|||
|
|
|||
|
`worker_connections` - Устанавливает максимальное количество соединений одного рабочего процесса, то есть nginx будет обрабатывать `worker_processes` * `worker_connections`, остальные запросы ставить в очередь. Следует выбирать значения от 1024 до 4096. По умолчанию 512.
|
|||
|
|
|||
|
`multi_accept` - Позволяет принимать максимально возможное количество соединений. Иначе, процесс nginx за один раз будет принимать только одно новое соединение. По умолчанию off.
|
|||
|
|
|||
|
`keepalive_timeout` - Отвечает за максимальное время поддержания keepalive-соединения, в случае, если пользователь по нему ничего не запрашивает. Для современных систем, стоит выставить от 30 до 50. В нашем случае 45. По умолчанию 75.
|
|||
|
|
|||
|
`reset_timedout_connection` - Если клиент перестал читать страницу, Nginx будет сбрасывать соединение с ним. По умолчанию off.
|
|||
|
|
|||
|
`client_body_timeout` - Ждет выставленное количество секунд тело запроса от клиента, после чего сбрасывает соединение. Таймаут задается только для периода между двумя последовательными операциями чтения, а не для передачи всего тела запроса. Если клиент ничего не передает в течение этого времени, запрос завершается с ошибкой 408 (Request Time-out). По умолчанию 60.
|
|||
|
|
|||
|
`client_header_timeout` - Определяет тайм-аут для чтения заголовка запроса клиента. Если клиент не передает весь заголовок в течение этого времени, запрос завершается с ошибкой 408 (Request Time-out).
|
|||
|
|
|||
|
`send_timeout` - Если клиент прекратит чтение ответа, Nginx подождет выставленное количество секунд и сбросит соединение. По умолчанию 60.
|
|||
|
|
|||
|
`client_body_buffer_size` - Задает размер буфера для чтения тела запроса клиента. Если тело запроса больше буфера, то все тело или только его часть записывается во временный файл.
|
|||
|
|
|||
|
`client_header_buffer_size` - Относится к размеру буфера относительно заголовка клиентского запроса.
|
|||
|
|
|||
|
`client_max_body_size` - Устанавливает максимально допустимый размер тела запроса клиента, указанный в поле заголовка запроса "Content-Length". Если размер в запросе превышает настроенное значение, клиенту возвращается ошибка 413 (Request Entity Too Large).
|
|||
|
|
|||
|
`large_client_header_buffers` - Максимальное количество и размер буферов для больших клиентских заголовков. Строка запроса не может превышать размер одного буфера, иначе клиенту будет возвращена ошибка 414 (Request-URI Too Large).
|