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