Apache 无响应(网站关闭)或崩溃,已达到 MaxRequestWorkers 设置

Apache 无响应(网站关闭)或崩溃,已达到 MaxRequestWorkers 设置

这个问题是关于 Apache 反复崩溃,并且在运行时没有响应,即我无法访问该站点,所以我试图找出原因。

我的 Owncloud 网站由 Ubuntu 14.04 上的 Apache 2.4.7 提供服务,但无法访问。为了检查问题出在哪里,我运行了 apachectl -S:

~$ sudo apachectl -S
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
VirtualHost configuration:
*:443                  oc.benopp.org (/etc/apache2/sites-enabled/000-default.conf:1)
*:80                   127.0.1.1 (/etc/apache2/sites-enabled/000-default.conf:18)
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex mpm-accept: using_defaults
Mutex watchdog-callback: using_defaults
Mutex rewrite-map: using_defaults
Mutex ssl-stapling: using_defaults
Mutex ssl-cache: using_defaults
Mutex default: dir="/var/lock/apache2" mechanism=fcntl 
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33
Group: name="www-data" id=33

但这似乎没有解释问题。error.log 中说:

[Wed Jan 07 19:07:13.384687 2015] [ssl:warn] [pid 1699] AH01906: RSA server certificate is a CA certificate (BasicConstraints: CA == TRUE !?)
[Wed Jan 07 19:07:13.389319 2015] [mpm_prefork:notice] [pid 1699] AH00163: Apache/2.4.7 (Ubuntu) mod_gnutls/0.5.10 PHP/5.5.9-1ubuntu4.5 OpenSSL/1.0.1f configured -- resuming normal operations
[Wed Jan 07 19:07:13.389359 2015] [core:notice] [pid 1699] AH00094: Command line: '/usr/sbin/apache2'
[Wed Jan 07 19:08:01.788631 2015] [mpm_prefork:error] [pid 1699] AH00161: server reached MaxRequestWorkers setting, consider raising the MaxRequestWorkers setting

我不明白只有我一个人使用该网站如何达到最大请求设置。我是否可以假设,虽然我是唯一一个尝试访问 Owncloud 来下载某些文件或更改设置的人,但这绝不会导致这么多的请求?

为了仔细观察,我激活了mod_status。不幸的是,我不知道该如何理解这个读数,因为我只自学了如何设置 Apache 来运行我的 Owncloud,而且我对此还很陌生。在这里内联发布服务器状态页面读数似乎有点长,所以我做了一个粘贴:http://pastie.org/private/aj7zduzhrt8sayjb4hncg

因此,所有进程都在“发送回复”,但我不知道发送回复的对象,因为我没有发送任何请求,而且服务器实际上现在已与互联网断开连接。文档中解释了如何查找导致过大工作量的问题,但我无法让 Top 向我展示一些我可以使用的东西。但看起来 CPU 负载确实不高,没有看到高负载。你能从这个读数中看出问题是什么吗?

EDIT2:几个小时前发生了另一次崩溃,以下是与错误日志中似乎相关的部分:

文件开头:

ProblemType: Crash
Architecture: amd64
CrashCounter: 1
Date: Tue Jan  6 13:50:05 2015
DistroRelease: Ubuntu 14.04
ExecutablePath: /usr/sbin/apache2
ExecutableTimestamp: 1406039884
ProcCmdline: /usr/sbin/apache2 -k start
ProcCwd: /etc/apache2
ProcEnviron:
 PATH=(custom, no user)
 LANG=C
ProcMaps:
 7fd2a4000000-7fd2a8000000 rw-s 00000000 00:04 12964                      /dev/zero (deleted)
 7fd2a8000000-7fd2a8021000 rw-p 00000000 00:00 0 
 7fd2a8021000-7fd2ac000000 ---p 00000000 00:00 0 
 7fd2aced8000-7fd2acedd000 r-xp 00000000 08:01 266060                     /lib/x86_64-linux-gnu/libnss_dns-2.19.so
 7fd2acedd000-7fd2ad0dc000 ---p 00005000 08:01 266060                     /lib/x86_64-linux-gnu/libnss_dns-2.19.so
 7fd2ad0dc000-7fd2ad0dd000 r--p 00004000 08:01 266060                     /lib/x86_64-linux-gnu/libnss_dns-2.19.so

依此类推,直到文件结束:

ProcStatus:
 Name:  apache2
 State: R (running)
 Tgid:  2807
 Ngid:  0
 Pid:   2807
 PPid:  1838
 TracerPid: 0
 Uid:   33  33  33  33
 Gid:   33  33  33  33
 FDSize:    64
 Groups:    33 
 VmPeak:      525052 kB
 VmSize:      524944 kB
 VmLck:        0 kB
 VmPin:        0 kB
 VmHWM:    23680 kB
 VmRSS:    23680 kB
 VmData:       85112 kB
 VmStk:      136 kB
 VmExe:      592 kB
 VmLib:    74868 kB
 VmPTE:      712 kB
 VmSwap:           0 kB
 Threads:   1
 SigQ:  1/29106
 SigPnd:    0000000000000000
 ShdPnd:    0000000000000000
 SigBlk:    0000000000004000
 SigIgn:    0000000001001000
 SigCgt:    000000018c0042eb
 CapInh:    0000000000000000
 CapPrm:    0000000000000000
 CapEff:    0000000000000000
 CapBnd:    0000001fffffffff
 Seccomp:   0
 Cpus_allowed:  3
 Cpus_allowed_list: 0-1
 Mems_allowed:  00000000,00000001
 Mems_allowed_list: 0
 voluntary_ctxt_switches:   21
 nonvoluntary_ctxt_switches:    34
Signal: 11
Uname: Linux 3.13.0-43-generic x86_64
UserGroups: 
CoreDump: base64

然后我删除了 CoreDump。

答案1

这听起来像是在启动板上发布的以下错误: https://bugs.launchpad.net/ubuntu/+source/php-apcu/+bug/1422484

简而言之,PHP 5 的 APC 用户缓存似乎存在问题,至少是 Ubuntu 14.04 打包的版本存在问题。

修复方法似乎是清除 php5-apcu 包,然后重新启动 apache:

sudo apt-get purge php5-apcu
sudo service apache2 restart 

我刚刚这样做了,所以我不确定它是否真的能长期解决这个问题。我还在错误日志中看到了 APC 错误。

如果您找到了不同的解决方案,我很乐意听到。

相关内容