如果您只在一个站点上收到错误 ERR_CONNECTION_RESET,则服务器端可能有问题。

接收随机ERR_CONNECTION_RESET

几周前,我的一个同事向我抱怨:有时候,当他使用 WordPress 主题编辑器时,他要么收到一个空的 HTML 页面,要么无法加载某些 JavaScript。

我能够重复这个问题。重新加载 WordPress 主题编辑器三到五次后,Chrome 的 Web 开发人员控制台显示 net::ERR_CONNECTION_RESET 错误。

net::ERR_CONNECTION_RESET

文档的检索字节始终不同。

在每个请求上检索的不同字节大小

ERR_CONNECTION_RESET意味着 TCP 堆栈有问题,我们的客户端/浏览器没有收到预期的数据包。

同一台服务器上有另一个 WordPress 实例,没有任何问题。我和我的同事通过使用其他互联网提供商收到了ERR_CONNECTION_RESET

这些事实让我得出结论,这可能不是一些奇怪的 MTU 问题,而是网络服务器/PHP/WordPress 设置有问题。

深入研究日志文件

我手头没有任何日志,所以我不得不开一张支持票。我希望支持服务会问我搜索时通常会发现的所有问题(联系您的网络提供商?)。我没有失望。

最后问了一下Apache的error_log有没有hint。支持人员给了我一些摘录。首先摘自 Apache 的 error_log

FastCGI: too much stderr received from server / path-to-instance/php74-fpm", 增加 FCGI_SERVER_MAX_STDERR_LINE_LEN (1023) 并重建或使用 "
" 终止行,referer: https://wordpress-instance/wordpress/wp-admin/themes.php

来自 PHP-FPM 的第二个日志:

注意:PHP 消息:PHP 注意:尝试访问 /www/ 中 bool 类型值的数组偏移量htdocs/path-to-instance/wordpress/wp-content/plugins/wp-statistics/includes/classes/class-wp-statistics-widget.php注意:PHP消息:PHP注意:/www/htdocs/中的数组到字符串的转换path-to-instance/wordpress/wp-includes/formatting.php

这些消息一遍又一遍地重复。

因为我之前禁用了所有 WordPress 插件,我可以排除 wp-statistics 插件中的硬错误。< span> span>

有 th根据手头的信息,我得出以下结论:由于 PHP 的注意,PHP-FPM 正在向 Apache 发送大量邮件。1023 messages received 在该行之后,进程终止。

减少 PHP 的通知数量< p>最后,解析 span>ERR_CONNECTION_RESET 很简单。我将 WordPress 的 error_reporting 更改为 E_ALL 和 ~E_NOTICE :

error_reporting(E_ALL & ~E_NOTICE);

更改后error_reporting,记录的行数减少到 0,一切正常。

总结

这一集是一个经典示例,说明您如何仅通过日记计划就可以找到解决方案。跳过所有关于“如何修复 XYZ”的点击诱饵文章,并查看涉及的系统及其日志文件。一切都在那里。