13

我的 Apache 日志中不断出现以下错误:

[Wed Sep 18 17:59:20 2013] [notice] Apache/2.2.22 (Ubuntu) PHP/5.3.10-1ubuntu3.8 with Suhosin-Patch configured -- resuming normal operations
[Wed Sep 18 18:06:30 2013] [notice] child pid 7505 exit signal Segmentation fault (11), possible coredump in /etc/apache2
[Wed Sep 18 18:06:35 2013] [notice] child pid 7497 exit signal Segmentation fault (11), possible coredump in /etc/apache2
[Wed Sep 18 18:13:53 2013] [notice] child pid 7501 exit signal Segmentation fault (11), possible coredump in /etc/apache2
[Wed Sep 18 18:13:53 2013] [notice] child pid 7506 exit signal Segmentation fault (11), possible coredump in /etc/apache2
[Wed Sep 18 18:14:14 2013] [notice] child pid 8708 exit signal Segmentation fault (11), possible coredump in /etc/apache2

我试图通过执行以下操作来回溯它:

user:~$ sudo gdb
user     8670  8571  0 18:12 pts/3    00:00:00 grep --color=auto httpd
user:~$ sudo gdb

(gdb) attach 8571
Attaching to process 8571
Reading symbols from /bin/bash...(no debugging symbols found)...done.
Reading symbols from /lib/x86_64-linux-gnu/libtinfo.so.5...(no debugging symbols found)...done.
Loaded symbols for /lib/x86_64-linux-gnu/libtinfo.so.5 
Reading symbols from /lib/x86_64-linux-gnu/libdl.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib/x86_64-linux-gnu/libdl.so.2
Reading symbols from /lib/x86_64-linux-gnu/libc.so.6...(no debugging symbols found)...done.
Loaded symbols for /lib/x86_64-linux-gnu/libc.so.6
Reading symbols from /lib64/ld-linux-x86-64.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib64/ld-linux-x86-64.so.2
Reading symbols from /lib/x86_64-linux-gnu/libnss_compat.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib/x86_64-linux-gnu/libnss_compat.so.2
Reading symbols from /lib/x86_64-linux-gnu/libnsl.so.1...(no debugging symbols found)...done.
Loaded symbols for /lib/x86_64-linux-gnu/libnsl.so.1
Reading symbols from /lib/x86_64-linux-gnu/libnss_nis.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib/x86_64-linux-gnu/libnss_nis.so.2
Reading symbols from /lib/x86_64-linux-gnu/libnss_files.so.2...(no debugging symbols      found)...done.
Loaded symbols for /lib/x86_64-linux-gnu/libnss_files.so.2
0x00007f553000244e in waitpid () from /lib/x86_64-linux-gnu/libc.so.6

(gdb) backtrace
#0  0x00007f553000244e in waitpid () from /lib/x86_64-linux-gnu/libc.so.6
#1  0x0000000000441419 in ?? ()
#2  0x000000000044255c in wait_for ()
#3  0x0000000000432c88 in execute_command_internal ()
#4  0x00000000004352fe in execute_command ()
#5  0x000000000041e31d in reader_loop ()
#6  0x000000000041ca87 in main ()

(gdb) backtrace full
#0  0x00007f553000244e in waitpid () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
#1  0x0000000000441419 in ?? ()
No symbol table info available.
#2  0x000000000044255c in wait_for ()
No symbol table info available.
#3  0x0000000000432c88 in execute_command_internal ()
No symbol table info available.
#4  0x00000000004352fe in execute_command ()
No symbol table info available.
#5  0x000000000041e31d in reader_loop ()
No symbol table info available.
#6  0x000000000041ca87 in main ()
No symbol table info available.`

我无法解决这个问题。

我还在 apache 上运行 gdb,如下所示:

user:~$ sudo gdb apache2
Reading symbols from /usr/sbin/apache2...(no debugging symbols found)...done.

(gdb) run
Starting program: /usr/sbin/apache2
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
apache2: bad user name ${APACHE_RUN_USER}
[Inferior 1 (process 6925) exited with code 01]

我不知道它是否与这个问题有关,但是一旦我安装了 gdb,我登录时就会显示以下消息:

=> There were exceptions while processing one or more plugins. See
 /var/log/landscape/sysinfo.log for more information.

sysinfo.log 包含以下内容:

for process_info in info.get_all_process_info():
File "/usr/lib/python2.7/dist-packages/landscape/lib/process.py", line 49, in get_all_process_info
process_info = self.get_process_info(process_id)
File "/usr/lib/python2.7/dist-packages/landscape/lib/process.py", line 85, in get_process_info
process_info["state"] = STATES[state]
KeyError: 't (tracing stop)'
2013-09-18 18:43:35,633 ERROR    Processes plugin raised an exception.
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/landscape/sysinfo/sysinfo.py", line 99, in run
result = plugin.run()
File "/usr/lib/python2.7/dist-packages/landscape/sysinfo/processes.py", line 18, in run
for process_info in info.get_all_process_info():
File "/usr/lib/python2.7/dist-packages/landscape/lib/process.py", line 49, in get_all_process_info
process_info = self.get_process_info(process_id)
File "/usr/lib/python2.7/dist-packages/landscape/lib/process.py", line 85, in get_process_info
process_info["state"] = STATES[state]
KeyError: 't (tracing stop)'

一些背景。

我在我的 VPS 上运行一个 WordPress 网站。VPS 是一个安装了 PERL 和 CURL 的基于 Ubuntu 的 LAMP 服务器。我使用 APC 进行缓存,但在安装 APC 之前发生了分段错误。最后,我通过 Google PageSpeed 服务运行我的服务器,因此我安装了适用于 Apache 2.2 的 mod_remoteip mod 并有一个 X-Forwarded-For 标头。

ulimit 核心是无限的。我的 phpinfo() 文件可以在这里找到:http: //tecne.ws/11v

请协助。将不胜感激!

4

11 回答 11

11

我遇到了这个问题并更改LogLevel warnLogLevel debug在 apache 配置中。重新启动时,它似乎在 mod_deflate 之后出现了段错误。

在 debian/ubuntu 中关闭 mod_deflate 应该只是sudo a2dismod deflate

于 2013-09-25T01:23:47.860 回答
3

我间接解决了这个问题。我将 Nginx 放在 Apache 前面,我不再有分段错误。在我看来,将 Nginx 放在 Apache 前面是一个更好的设置。Varnish Cache 可能也解决了这个问题。

于 2013-09-20T15:03:14.610 回答
2

这个问题通常是由 Apache 模块引起的。如您所见,其他答案是关于一个模块或另一个。通用答案可能是尝试禁用您启用的最后一个模块

就我而言,导致问题的模块是 Ubuntu 18.04 上的 php7.3。PHP 7.2 有效,但 PHP 7.3 无效。

于 2019-02-07T15:40:00.197 回答
1

尝试设置

max_input_time = -1

在你的 php.ini 文件中。

从 php.ini...

; Maximum amount of time each script may spend parsing request data. It's a good; idea to limit this time on productions servers in order to eliminate unexpectedly ; long running scripts. ; Note: This directive is hardcoded to -1 for the CLI SAPI ; Default Value: -1 (Unlimited) ; Development Value: 60 (60 seconds) ; Production Value: 60 (60 seconds) ; http://php.net/max-input-time;

于 2015-04-21T17:23:15.030 回答
1

经过一整天的努力追查此事,没有任何解决方案奏效。然而,我最终将 Apache 转为调试级别日志记录,并立即注意到 Google 的 mod_pagespeed 有数百条通知/警告,用于 Apache 试图从 Jetpack 的 Photon 图像重写图像。

我做了一个简单的a2dismod pagespeed并且没有更多的分段错误。

还注意到我的网站现在实际上在关闭 mod pagespeed 的情况下运行得更快。

似乎有很多关于 pagespeed 导致分段错误的错误报告。

不确定它是否只是 mod_pagespeed 或 mod_pagespeed、wordpress 和 php 的组合....但现在关闭了问题。

我现在已经完成了它,现在也在将所有内容转移到 Nginx 的过程中。在 Apache 上跟踪错误总是变成一场噩梦,使用 Nginx 我可以在几秒钟到一分钟内找到错误。

于 2016-07-24T15:34:52.213 回答
1

我在 Centos 6 上使用 Varnish>Apache>PHP-FPM 时遇到了同样的问题。

我通过在 Apache 中禁用 KeepAlive 解决了这个问题。

于 2017-02-05T17:52:14.193 回答
1

我刚刚重新启动了 Apache,问题就消失了

于 2020-12-08T14:27:33.070 回答
0

我尝试将我的系统从ubuntu14.04 升级到 18.04,并遇到了这个问题,我降级到 16.04 来解决它。

我也将我的升级php到 7.0

于 2019-04-24T02:36:09.207 回答
0

当我的 PHP 中存在无限循环时出现此错误(特别是递归调用自身的函数)

于 2020-07-08T00:20:45.483 回答
0

我遇到了这个确切的错误,我刚刚重新启动了服务器(重新启动 apache 没有帮助)。

如果你刚刚做了一个可能会考虑它apt upgrade

于 2020-04-11T22:27:58.113 回答
0

就我而言,每当我从 iOS / MacOS Safari 访问我的网站时,就会出现错误。在从其中一个设备第一次访问之后,apache 一直在对来自任何设备的任何请求进行分段错误,直到下一次重新启动。

禁用 Google 的mod_spdy模块后问题消失了。

于 2018-04-11T05:18:02.667 回答