Re: Отдача больших файлов

Anton Yuzhaninov citrin at citrin.ru
Tue Jan 14 09:28:40 UTC 2014


On 01/14/14 01:17, Anton Sayetsky wrote:
> Собственно, планируется сабж в ближайшем будущем.
> Размеры файлов - от 1 до 8-10 ГиБ, 400-500 сессий до 2-3 коннектов на
> сессию, траф - 4-5 ГБит/сек. Последние два параметра в перспективе
> могут вырасти ориентировочно до двух раз. Ось - FreeBSD, ФС - ZFS.
> Есть ли общие рекомендации настройки nginx для подобных конфигураций?
> Размер/кол-во буферов, метод отдачи файлов и т.п.

1. Собрать ядро с увеличенным до 1 Мб MAXPHYS

options         MAXPHYS=(1024*1024)

2. Подобрать оптимальное значение для
sysct kern.ipc.sendfile.readahead
измеряется в блоках по MAXBSIZE (по умолчанию 64к)
больше MAXPHYS/MAXBSIZE ставить смысла нет.
т. е. при MAXPHYS 1 Мб можно попробовать kern.ipc.sendfile.readahead=16

Ну и собственно в конфиге nginx - sendfile on;

3. Про тюнинг ZFS написано много, в первую стоит посмотреть на размер ARC - по 
умолчанию ZFS пытается съесть почти всю память и запущенным приложениям остаётся 
мало, иногда аппетиты ZFS приходится ограничивать:
vfs.zfs.arc_max="16G"
vfs.zfs.prefetch_disable="1" # это стоит проверять на тестах, но я несколько раз 
сталкивался с тем, что отключение ZFS prefetch ускоряет работу.



Подробная информация о списке рассылки nginx-ru