Chrome、Firefox 和 cURL 上无处不在的分块请求问题
Chunking Request Issues Out Of Nowhere on Chrome, Firefox, and cURL
似乎无处不在,我的生产服务器在特定请求上出现分块错误。服务器上没有更改配置文件,服务器上的其他任何内容都没有更改。我什至不知道从哪里开始调试这个错误。
此分块错误仅发生在 1 个带有查询参数的 GET 请求上。
在 Chrome 上,错误是:
net::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (Ok)
。
为确保这不是 Chrome 特定问题,我在 Firefox 上进行了尝试,但同样的事情发生了,尽管出现了不同的错误 SyntaxError: JSON.parse: unterminated string at line
。检查响应显示 Firefox 正在从请求中接收一些 JSON,但不是全部。
在服务器上,我使用 cURL 获取具有完全相同查询参数的 URL 并收到此错误:ncurl: (18) transfer closed with outstanding read data remaining
。如果我使用 HTTP 1.0 没有任何变化,但如果我添加 header "Expect: "
,在某些时候请求停止接收数据。
cURL 不是这里的问题,我需要这个请求来处理 Javascript AJAX 请求。发出此请求的文件已 7 个月未更改。
此请求的预期 return 是数据库中的 50 - 200 行。如果我直接在数据库上做一个SELECT查询,是没有问题的。
我从哪里开始看?日志文件没有感兴趣的信息,服务器有足够的内存和 cpu.
我们的服务器是 Ubuntu 16.04 和 Apache 2.4。我们的API是DreamFactory;也没有更改任何设置。
看起来您有防火墙或防病毒软件 运行。尝试在关闭或暂停杀毒软件的情况下拨打电话?
在我的 php.ini 文件中更改 opcache.fast_shutdown=0
似乎解决了这个问题。
Apache 的 error_log 在我遇到此问题的每个请求中都得到一个新行 zend_mm_heap corrupted
。
见this question
似乎无处不在,我的生产服务器在特定请求上出现分块错误。服务器上没有更改配置文件,服务器上的其他任何内容都没有更改。我什至不知道从哪里开始调试这个错误。
此分块错误仅发生在 1 个带有查询参数的 GET 请求上。
在 Chrome 上,错误是:
net::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (Ok)
。
为确保这不是 Chrome 特定问题,我在 Firefox 上进行了尝试,但同样的事情发生了,尽管出现了不同的错误 SyntaxError: JSON.parse: unterminated string at line
。检查响应显示 Firefox 正在从请求中接收一些 JSON,但不是全部。
在服务器上,我使用 cURL 获取具有完全相同查询参数的 URL 并收到此错误:ncurl: (18) transfer closed with outstanding read data remaining
。如果我使用 HTTP 1.0 没有任何变化,但如果我添加 header "Expect: "
,在某些时候请求停止接收数据。
cURL 不是这里的问题,我需要这个请求来处理 Javascript AJAX 请求。发出此请求的文件已 7 个月未更改。
此请求的预期 return 是数据库中的 50 - 200 行。如果我直接在数据库上做一个SELECT查询,是没有问题的。
我从哪里开始看?日志文件没有感兴趣的信息,服务器有足够的内存和 cpu.
我们的服务器是 Ubuntu 16.04 和 Apache 2.4。我们的API是DreamFactory;也没有更改任何设置。
看起来您有防火墙或防病毒软件 运行。尝试在关闭或暂停杀毒软件的情况下拨打电话?
在我的 php.ini 文件中更改 opcache.fast_shutdown=0
似乎解决了这个问题。
Apache 的 error_log 在我遇到此问题的每个请求中都得到一个新行 zend_mm_heap corrupted
。
见this question