preread_buffer_size
Задает размер буфера для чтения начальных данных в модулях stream. — NGINX Stream Core
Описание
Директива 'preread_buffer_size' в NGINX Stream Core определяет размер буфера, используемого для чтения начальных данных из сокета до передачи соединения на backend server. Этот размер буфера имеет решающее значение для протоколов, которым требуется прочитать определённый объём данных для корректной обработки запроса или для определения требуемого backend server на основе полученных начальных данных. По умолчанию размер буфера установлен в 16k, но его можно настроить в соответствии с конкретными потребностями приложения. Если буфер слишком мал, это может привести к усечённому чтению данных, что вызовет проблемы при обработке запросов или некорректную маршрутизацию на backend server. Увеличение размера буфера помогает учесть большие начальные пакеты без риска потери данных, в то же время слишком большое значение может привести к ненужному расходу памяти, особенно при обработке большого количества одновременно открытых соединений. Обычно директива объявляется в контекстах 'stream' или 'stream server', что позволяет задавать разные размеры для разных случаев в зависимости от архитектуры. При настройке этой директивы следует тщательно учитывать баланс между производительностью и использованием памяти.
Пример конфига
stream {
server {
listen 1234;
preread_buffer_size 32k;
}
}Установка слишком малого размера буфера может привести к проблемам с крупными первоначальными запросами и потенциальным сбоям запросов.
Чрезмерно большое значение может вызвать ненужную нагрузку на память, особенно при обслуживании большого числа одновременных потоков.