Назад | Перейти на главную страницу

Оптимизация nginx client_body_buffer_size для веб-приложения, принимающего загрузку файлов

Какие соображения влияют на настройку nginx client_body_buffer_size?

Я установил это на 10m для веб-сайта, на который пользователи загружают фотографии и изображения-мемы (вроде как 9gag). Обратите внимание, что client_max_body_size установлен на 10m также. В целом, я считаю, что веб-сервер должен принимать запросы POST с изображениями размером до 10 МБ (политика веб-сайта) - и, следовательно, обе эти директивы должны быть 10m.

Правильно ли это рассуждение?

Может ли кто-нибудь пролить свет на факторы, влияющие на то, какие значения устанавливать client_body_buffer_size, а типичные значения client_body_buffer_size (для типа веб-приложения, которое я описал)?

В случае необходимости я использую nginx в качестве обратного прокси.

В документация заявляет, что client_body_buffer_size делает:

Устанавливает размер буфера для чтения тела запроса клиента. В случае, если тело запроса больше, чем буфер, все тело или только его часть записывается во временный файл. По умолчанию размер буфера равен двум страницам памяти. Это 8K на x86, других 32-битных платформах и x86-64. Обычно это 16 КБ на других 64-битных платформах.

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

Это означает, что у вас должно быть достаточно ОЗУ для хранения любых одновременных загрузок, иначе ваш сервер начнет подкачку.

Влияние этого на производительность, вероятно, не так велико, если только вы не сильно ограничены памятью и не получаете одновременно много загрузок.