Welcome! Log In Create A New Profile

Advanced

Re: Отключение буферизации для fastcgi

Maxim Dounin
March 12, 2010 09:14PM
Hello!

On Sat, Mar 13, 2010 at 03:29:36AM +0300, Dmitry Koterov wrote:

> Есть вот такая конфигурация:
>
> location ~ /action/ {
> gzip off;
> fastcgi_buffer_size 4k;
> fastcgi_busy_buffers_size 4k;
> fastcgi_buffers 2 4k;
> fastcgi_pass 127.0.0.1:9000;
> fastcgi_param SCRIPT_FILENAME $document_root/index.php;
> include fastcgi_params;
> }
>
> Вопрос: можно ли ВООБЩЕ ВЫКЛЮЧИТЬ буферизацию, а НЕ сделать ее равной 4k +
> 2*4k? Дело в том, что в index.php лежит:

Нет, вообще отключить буферизацию для fastcgi нельзя.

>
> // в php.ini отключены output_buffering, output_compression, output_handler;
> implicit_flush включен
> while (ob_get_level()) ob_end_clean(); // на всякий пожарный
> for ($i = 0; $i < 5; $i++) {
> echo "Test! " . time() . "<br>\n";
> for ($n = 0; $n < 15000; $n++) echo "\n";
> flush();
> sleep(2);
> }
> exit;
>
> И экспериментальным путем было установлено, что $n = 15000 (плюс-минус) -
> это минимальный размер "вантуза", которым удается "протолкнуть" контент в
> браузер. Установка fastcgi_buffer_size и fastcgi_busy_buffers_size в меньшие
> значения не помогают (возможно, они просто вообще не могут корректно
> определяться внутри location, либо же всегда кратны 4K?).
>
> Т.е. задача - минимизировать размер "вантуза" любыми средствами. (Все-таки
> 15К - это многовато.)
> Подскажите, пожалуйста, как это правильно сделать.

nginx отдаёт данные клиенту (точнее - в цепочку исходящих
фильтров) после заполнения бекендом очередного буфера (либо
основного - fastcgi_buffer_size, либо одного из дополнительных -
fastcgi_buffers). В вашем случае это всегда 4k. Можно уменьшить,
но если в основной буфер не влезут все заголовки ответа - будет
502.

А 16k - скорее всего следует искать либо в php, либо в других
буферизирующих прослойках (e.g. ssl в nginx'е имеет буфер в 16k;
если тестируем по ssl - то результат объясним). Включённый debug
log вкупе с тестиком вида "напечатать 1k и поспать секунду,
повторить" быстро покажет что на самом деле происходит.

Maxim Dounin

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

Отключение буферизации для fastcgi

Dmitry Koterov March 12, 2010 07:32PM

Re: Отключение буферизации для fastcgi

Maxim Dounin March 12, 2010 09:14PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 188
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready