Пользовательский агент ожидает максимального времени ожидания активности для каждого http-запроса - PullRequest
0 голосов
/ 18 февраля 2019

Браузеры ожидают максимального времени активности активности для домашней страницы Symfony.

Если я отключу Keepalive (apache), все в порядке.Заголовок ответа "Connection: Close" получен, и браузер перестает ждать.Общее время около 200 мс.

Если я включаю Keepalive (apache), ответ заголовков:

Соединение: Keep-Alive
Keep-Alive: timeout = 5, max= 500
Transfer-Encoding: chunked

Нет заголовка 'Content-Encoding'
Нет заголовка 'content-length' (сохранить в живых)

Php.ini:

output_buffering = 4096

Я использую php-fpm на удаленном сервере.Вот конфигурация apache:

ProxyPassMatch ^ / (. .php (/ .)?) $ Fcgi: //192.168.1.1: 9000 / var / php-fpm /www / public / $ 1

Браузер получил данные, но ждет 5 с.Похоже, что браузер ожидает окончания порции данных (последний пакет размером 0).

Веб-сервер apache2.4.6, код php7.1.8 / synfony 4. Тот же код в среде разработки работаетнормально (другой хост).

Время выполнения в логах apache составляет около 20 мс (не 5 с!).Браузер ожидает окончания передачи и останавливается с тайм-аутом keepalive.Если для таймаута keepalive установлено значение 20 с, браузеры ждут 20 с после получения данных.

Показатель производительности Symfony «Общее время выполнения» составляет 18 мс (в режиме разработки).Временная шкала Internet Explorer (F12) показывает 5,35 мс с 5 с для «времени отклика» в конце детализации.

Если я получаю простую страницу (phpinfo), у меня нет проблемы, это с домашней страницей Symfony итолько с производственным сервером.

Простой тест с curl (без ajax, js ...) показывает проблему: данные получены полностью (</html>), но curl все еще ждет 5s и пишет сообщение:

передача закрыта с оставшимися незавершенными считанными данными

вместо:

Соединение № 0 с хостом xxxxxxx осталось без изменений

Если я отключаю виртуальный хост ssl apache и тестирую с помощью Fiddler, Fiddler показывает это сообщение об ошибке, когда я нажимаю для декодирования тела ответа:

тело фрагмента не завершается должным образом с порцией 0 размера

Есть ли проблема php chunk с php / synfony?

Большое спасибо.

1 Ответ

0 голосов
/ 01 марта 2019

Я решил свою проблему.Директива «FallbackResource» в apache вызывает эту проблему «чанка».Эта опция позволяет отключить использование AllowOverride и .htaccess и попросить веб-сервер Apache перенаправить все запросы на одну страницу (больше не нужен DirectoryIndex).Но, похоже, он не совместим с KeepAlive для страницы индекса.Я не знаю, является ли это ошибкой apache.

...