用户代理正在等待每个http查询的最大keepalive超时

问题描述 投票:2回答:1

浏览器正在等待symfony主页的最大保持活动时间。

如果我禁用Keepalive(apache),那没关系。收到响应头“qazxsw poi”,浏览器停止等待。总时间接近200毫秒。

如果我启用Keepalive(apache),则标头响应为:

连接:保持活力 保持活跃:超时= 5,最大= 500 转移编码:分块

没有'Connection: Close'标题 没有'Content-Encoding'标题(保持活力)

php.ini中:

output_buffering = 4096

我在远程服务器上使用php-fpm。这是apache配置:

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

浏览器收到数据但等待5秒。似乎浏览器正在等待分块数据的结束(最后0个大小的数据包)。

Web服务器是apache2.4.6,代码是php7.1.8 / symfony 4. developpement环境中的相同代码工作正常(另一个主机)。

apache日志中的执行时间接近20毫秒(不是5秒!)。浏览器等待传输结束并以keepalive超时停止。如果我为keepalive超时设置20秒,浏览器在收到数据后等待20秒。

Symfony性能指标“总执行时间”为18ms(在开发模式下)。 Internet Explorer时间轴(F12)显示5.35毫秒,详细结束时“响应时间”为5秒。

如果我得到一个简单的页面(phpinfo),我没有问题,它是symfony主页,只有生产服务器。

一个简单的curl测试(没有ajax,js ......)显示问题:数据完全被接收(qazxsw poi)但curl仍在等待5s并写入消息:

传输关闭,剩余未完成的读数据

代替 :

连接#0到主机xxxxxxx保持不变

如果我禁用ssl apache虚拟主机并且我使用Fiddler进行测试,当我点击解码响应主体时,Fiddler会显示此错误消息:

chunked body没有正确终止0大小的块

php / symfony有php块问题吗?

非常感谢你。

php apache timeout keep-alive chunked
1个回答
0
投票

我已经解决了我的问题。 apache中的指令“FallbackResource”导致了这个“块”问题。此选项允许禁用AllowOverride和.htaccess使用,并要求Apache Web服务器将所有请求重定向到一个页面(不再需要DirectoryIndex)。但它似乎与索引页面的KeepAlive不兼容。我不知道它是不是一个apache bug。

© www.soinside.com 2019 - 2024. All rights reserved.