Почитал старый ваш топик. Почему ушли от решения с увеличением
количества воркеров? Какой iostat у дисков теперь? Судя по тому, что
тестовый выделеный nginx отдаёт 25MB/s, диски не до конца упёрлись.
Не ушли.. я игрался с кол-вом воркеров. Самым оптимальным является 20
штук.. больше падает общая производительность, меньше тоже...
8 процессов в sbwait(а значит клиенты этих процессов не получают сейчас
ничего, тк заблокированы процессы) - ждут перлового реврайта судя по
старым постам. Судя по статусу Reading >=10 скорость входящих запросов
довольно большая. Не думали над схемой nginx frontend 5 worker's
(sendfile, proxy_pass, X-Accel-Redirect) -> nginx(apache) 40+ workers
(perl rewrite(либо что вам удобней) с выдачей редиректа)? Либо сделать
контролируемое скачивание одним nginx'ом, повесив perl в fast_cgi?
Пример есть на http://sysoev.ru/nginx/links.html и в рассылке
Смысл - разнести процессы-раздатчики_файлов и процессы, которые уходят в
блокировку при проверке закачки. В результате сможете иметь
контролируемое (и неблокирующееся за счёт sendfile_max_chunk) количество
раздатчиков_файлов(дискам полегче будет) и независимое от этого
количество процессов, занимающихся проверкой закачки. Блокировка этих
процессов не будет никому мешать(например worker_connections 1 :) )