digital-garden/_inbox/Оптимизация работы соединений Nginx.md
2024-06-13 21:01:37 +03:00

62 lines
5.0 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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).