С другой стороны, при использовании directio на ?гарячем файле?,
который качают много клиентов одновременно наверное не оправдано?
Нужен ли он вообще при раздаче больших файлов. Большие это от 1 до 8 гигабайта .
Кеш файловой системы бесполезен когда популярные файлы не влезают в оперативку. Тогда имеет смысл использовать directio для этих файлов, чтобы более эффетивно использовать кеш (например под мелкие файлы, которые могут раздаваться с другого server).
И еще один вопрос, я правильно понимаю что при чтении с диска worker
nginx блокируется полностью, и пока не окончится
чтение файла спанить новые процессы он не способен. Значит, для того
чтобы сервер смог обслужить 300 пользователей ? надо иметь
как минимум 300 воркеров?
Нет. Вокер никого не спанит, он в одном потоке обслуживает всех клиентов пришедших к нему. Но сейчас он блокируется на диске. Т.о. при сильной нагрузке имеет смысл поэксперементировать с количесивом вокеров: возможно, поставить их число примерно равным числу клиентов, возможно - N*количество_дисков, либо более изощренные схемы типа по nginx'у над своим диском с балансировкой и т.п.