gzip_to_cache
S.A.N
nginx-forum at nginx.us
Tue Feb 17 22:25:42 UTC 2015
Gena Makhomed Wrote:
-------------------------------------------------------
> Каким образом скорость соединения с клиентом
> влияет на время *блокировки* воркера nginx ?
>
> nginx работает с сетью в неблокирующем режиме.
Да, вы правы, медленный клиент не блокирует воркер, но компрессия ответа в
Nginx, практически не влияет на скорость его работы, проверил в ab, разница
на уровне погрешности.
> > 2. Да, в php-fpm обычно параллельно работают много воркеров, но эти
> воркеры
> > держат коннекты к MySQL, Redis и другим ресурсам, по этому
> освободить воркер
> > РНР, означает освободить коннекты, к которым может выстроится
> очередь других
> > РНР воркеров.
>
> Тогда уже придется делать больше воркеров nginx, чтобы они могли
> часть своего времени потратить на компрессию ответов от бекенда.
>
> > Скорость компрессии ответа в РНР будет медленней, потому что РНР
> должен
> > получить весь буфер вывода сжать его, очистить весь буфер и записать
> в него
> > сжатые данные, из-за этого в РНР это работает медленней, плюс
> небольшой
> > оверхед на вызове функций врапера zlib.
>
> А в nginx компрессия gzip разве работает каким-то другим способом?
>
> В ответе будет заголовок Transfer-Encoding: chunked
>
> и не будет заголовка Content-Length: - потому что в момент начала
> отправки сжатого ответа его полный размер неизвествен воркеру nginx.
Одно из немногих преимуществ компрессии на бекенде, это возможность отдать
правильный Content-Length, для нас это довольно важно чтобы мобил клиенты
могли правильно показывать прогресс бар загрузки, но думаю модуль
кеширования Nginx, может самостоятельно вычислить размер тела ответа и
сохранить в кеше правильный Content-Length.
Posted at Nginx Forum: http://forum.nginx.org/read.php?21,256725,256736#msg-256736
Подробная информация о списке рассылки nginx-ru