“服务器关闭了连接,没有发送任何数据”

“服务器关闭了连接,没有发送任何数据”
  1. 服务器设置
  2. 问题
  3. 诊断信息
  4. 我尝试过的方法
  5. 需要具体帮助

1. 我的服务器设置如下:

(使用 Hyper-V 在虚拟机中运行)

Debian Squeeze

Linux 2.6.32-5-amd64

Apache2-mpm-prefork 2.2.16-6+squeeze10

PHP 5.3.3-7+squeeze14

该服务器受 Suhosin Patch 0.9.9.1 保护

每个子级的最大请求数:0 - 保持活动:开启 - 每个连接的最大请求数:100

超时连接:300 - 保持活动:15

加载的模块核心 mod_log_config mod_logio prefork http_core mod_so mod_alias mod_auth_basic mod_auth_digest mod_authn_file mod_authz_default mod_authz_groupfile mod_authz_host mod_authz_user mod_cgi mod_deflate mod_dir mod_env mod_mime mod_negotiation mod_php5 mod_reqtimeout mod_rewrite mod_setenvif mod_ssl mod_status

Wordpress 3.4.2(即将升级到 3.5:)


2. 问题

当我重新启动服务器(sudo shutdown -r now)时,访问任何网站页面都会导致 Web 浏览器出现以下错误(在本例中为 Google Chrome,但其他浏览器也显示相同的错误)。此错误也可能在一切正常后一小时左右发生,似乎是随机发生的,这是我最担心的,因为这意味着我的服务器不可靠:

未收到数据 无法加载网页,因为服务器未发送任何数据。以下是一些建议:稍后重新加载此网页。错误 324 (net::ERR_EMPTY_RESPONSE):服务器关闭了连接,没有发送任何数据。


3. 诊断信息 Apache 错误日志包含以下条目:

[2012 年 12 月 14 日星期五 22:23:27] [通知] 子进程 pid 1955 退出信号浮点异常 (8)

[2012 年 12 月 14 日星期五 22:23:27] [通知] 子进程 pid 1956 退出信号浮点异常 (8)

[2012 年 12 月 14 日星期五 22:23:29] [通知] 子进程 pid 1957 退出信号浮点异常 (8)

[2012 年 12 月 14 日星期五 22:23:30] [通知] 子进程 pid 1958 退出信号浮点异常 (8)

[2012 年 12 月 14 日星期五 22:23:32] [通知] 子进程 pid 1959 退出信号浮点异常 (8)

[2012 年 12 月 14 日星期五 22:23:32] [通知] 子进程 pid 1960 退出信号浮点异常 (8)

[2012 年 12 月 14 日星期五 22:23:34] [通知] 子进程 pid 1961 退出信号浮点异常 (8)

[2012 年 12 月 14 日星期五 22:23:34] [通知] 子进程 pid 1962 退出信号浮点异常 (8)


4. 我尝试过的方法

a) 我可以使用以下命令重置服务器两次(重置一次不起作用)来暂时“修复”该网站。注意:“重新加载”选项不起作用,我必须使用两次重新启动。但是,错误可能会在一段时间后再次出现。

sudo /etc/init.d/apache2 重新启动 sudo /etc/init.d/apache2 重新启动

b) 我尝试通过卸载 php5-suhosin 来禁用 suhosin,但 php 信息页面仍然显示“此服务器受 Suhosin Patch 0.9.9.1 保护”。我尝试通过创建文件 /etc/php5/apache2/conf.d/suhosin.ini 将 Suhosin 置于模拟模式,该文件包含:

[suhosin] suhosin.simulation = 开启

php 信息页面在“已解析的其他 .ini 文件”列表中显示 suhosin.ini 文件,但 php 信息页面仍显示“此服务器受 Suhosin Patch 0.9.9.1 保护”

c) 增加 PHP 内存限制在 /etc/php5/apache2/ 中:

;脚本可能消耗的最大内存量(128MB)

http://php.net/memory-limit

内存限制 = 512M

d) 禁用所有 Wordpress 插件并返回默认主题。


5. 需要具体帮助 我非常希望得到帮助来调试这里发生的事情。我不确定如何确定 Apache 错误日志中哪些进程正在退出“[通知] 子进程 pid 1955 退出信号浮点异常 (8)”,或者是什么导致它们退出。以及 suhosin 是否是问题的一部分(如果是,如何禁用它)。

提前感谢您提供的任何帮助我调试此问题的建议或提示。

答案1

您是否启用了 xdebug php 扩展?我在 php 配置文件中禁用了它,之后再也没有发生过类似的崩溃。

更新:错误再次出现,因此 xdebug 扩展不是原因......

答案2

您使用 php,我会首先朝这个方向看,但看起来您已经在这么做了。我快速搜索了“退出信号浮点异常”的内容,结果出现了很多 apache+php 的问题。也许其中一个 php 脚本坏了,可能是设计问题,也可能是文件损坏了。

继续消除与 php 相关的东西直到崩溃停止,删除脚本/站点/插件,重新下载并重新安装 php 包和其他相关包(包括 apache2)。

相关内容