Ограничение соединений с backend
Андрей Василишин
andron at kpi.ua
Mon Jun 15 15:39:02 MSD 2009
Vladimir Latyshev пишет:
> пруфлинк пожалуйста
> из того, что я вижу в своих тестах, это не так
> и в документации нет подобной мысли про директиву limit_conn
>
> 15 июня 2009 г. 14:07 пользователь Alex Vorona <voron at amhost.net
> <mailto:voron at amhost.net>> написал:
>
> 15.06.2009 12:54, Vladimir Latyshev wrote:
>
> limit_conn указывать только в location с proxy_pass
> http://apache;
>
> именно там оно и указывается, только что по сути это меняет?
> проблема в том, что 100 медленных клиентов будут тянуть ответы
> от апача, в то время как соединения с ним уже освободились, но
> данная шайба не даст установить новые, пока ответ не будет
> полностью отдан клиенту
>
> Нет, limit_conn в location с proxy_pass http://apache; будет
> ограничивать только количество коннектов между nginx и apache, а
> не между nginx и клиентами. Медленный клиент или быстрый - apache
> всё равно отдаёт результат запроса быстрому nginx'у.
>
>
Использую
location ~ getfile.php$ {
limit_conn one 5;
set $limit_rate 3m;
proxy_pass http://127.0.0.1:8080;
}
location /files/ {
internal;
root /storage/htdocs;
}
location /503.html {
root /storage/htdocs;
}
В результате клиенты ломятся своими качальщиками на getfile.php, каждый
в в сколько позволяет совесть потоков, из них только 5 канают, далее
скрипт getfile.php отдает по X-Accel-Redirect прямой линк на файл,
который находится в директории /storage/htdocs/files/. Таким образом
качается файл максимум в 5 потоков суммарной скоростью 3Мб все остальные
конекты с этого же айпи получают 503, апач не нагружен.
--
WBR, Andrey Vasilishin CDIG1-UANIC, CDIG1-RIPE
More information about the nginx-ru
mailing list