Hello! On Mon, May 23, 2022 at 09:25:10AM +0300, Александр Кунич via nginx-ru wrote:
> Подскажите пожалуйста, есть ли способ настроить nginx так, чтобы он > читал более большими кусками файлы? У меня стоит задача раздавать файлы, > размер которых от 0,7 до 8 мегабайт. Большая часть больше 1М . > Собрал массив на тестовом сервере. > lsi raid1, размер чанка 1М, > > Тест fio с размером блока 1М показывает производительность массива > 185-190 МБ/с > > Nginx , судя по iostat avgrq-sz, читает кусками чуть меньше 256КБ . > Пиковая производительность в 2 раза меньше (около 80-85МБ/с). > > Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s > avgrq-sz avgqu-sz await svctm %util > sdd 0.60 0.00 348.80 0.00 73.39 0.00 > 430.93 7.01 20.08 2.45 85.44 > > Пробовал как ext4, так и xfs. Результат примерно одинаков. Максимальный > размер io у VD дисков выставлен в 1 мегабайт: > > /queue/max_hw_sectors_kb:1024 > /queue/max_sectors_kb:1024 > > В тесте fio avgrq-sz близок к 2048, чего и хотелось бы достичь от nginx. > > Нигде в документации не нашёл параметров, которые явно могли бы на это > повлиять. Различные буферы "крутить" пробовал, не помогает. > Заранее, большое спасибо за помощь. Если sendfile выключен - nginx будет читать с диска в соответствии с размером output_buffers (http://nginx.org/r/output_buffers). Если sendfile включён - чтением с диска занимается система, и повлиять на это на Linux'е не очень много способов. Из того, что можно сделать - с помощью директивы read_ahead (http://nginx.org/r/read_ahead) уведомить систему, что читать мы планируем последовательно, а также убедиться, что буфера сокетов на отправку достаточного размера, чтобы обеспечить желаемый размер чтения. Ну или выключить sendfile и смотри пункт первый. -- Maxim Dounin http://mdounin.ru/ _______________________________________________ nginx-ru mailing list -- nginx-ru@nginx.org To unsubscribe send an email to nginx-ru-le...@nginx.org