【问题标题】:APC and child pid XXXXX exit signal Segmentation fault [closed]APC 和子 pid XXXXX 退出信号分段错误 [关闭]
【发布时间】:2013-03-19 08:36:49
【问题描述】:

首先我在服务器上安装了 xCache,我在很多服务器上都安装了 xCache,但是在这几天之后,除了 apache 错误日志中出现此错误的空白页之外,你什么也没有:

 child pid XXXXX exit signal Segmentation fault

据我所知,这意味着某种内存损坏。

所以我从 php.ini 中删除了 xCache 并安装了 APC。但现在情况更糟了。一小时或更少/更多服务器变得无响应后。我可以在我网站的服务器状态中清楚地看到 W 模式下有很多连接。而且他们没有任何共同点。其中一些来自 Joomla(首页),一些来自 vBulletin(论坛),还有一些来自其他自定义代码。 如果我让它更长时间,我将在 Apache 错误日志中出现此错误:

 Server reached MaxClients setting, consider raising the MaxClients setting

Apache 处于 mod_php 和 mod_ruid2 模式。

这是挂起时服务器状态的结果:

Server uptime: 52 minutes 57 seconds
Total accesses: 31025 - Total Traffic: 279.0 MB
CPU Usage: u418.14 s64.28 cu0 cs0 - 15.2% CPU load
9.77 requests/sec - 89.9 kB/second - 9.2 kB/request
398 requests currently being processed, 27 idle workers

WWWWWWWWWWWWWWWWWWWWWWWWW.......................................
WWWWWWWWWWWWWWWWWWWWWWWWW.......................................
WWWWWWWWWWWWWWWWWWWWWWWWW.......................................
WWWWWWWWWWWWWWWWWWWWWWWWW.......................................
WWWWWWWWWWWWWWWWWWWWWWWWW.......................................
WWWWWWWWWWWWWWWWWWWWWWWWW.......................................
WWWWWWWWWWWWWWWWWWWWWWWWW.......................................
WWWWWWWWWWWWWWWWWWWWWWWWW.......................................
WWWWWWWWWWWWWWWWWWWWWWWWW.......................................
WWWWWWWWWWWWWWWWWWWWWWWWW.......................................
WWWWWWWWWWWWWWWWWWWWWWWWW.......................................
WWWWWWWWWWWWWWWWWWWWWWWWW.......................................
WWWWWWWWWWWWWWWWWWWWWWWWW.......................................
WWWWWWWWWWWWWWWWWWWWWWWWW.......................................
WWWWWWWWWWWWWWWWWWWWWWWWW.......................................
WW___WW_WW_W_WWW__WWWW_W_.......................................
_W___W___WW_W_W_W_W______.......................................

这是 xCache 的错误日志(其中很多行):

[Thu Mar 28 09:50:38 2013] [notice] child pid 1607 exit signal Aborted (6)
httpd: /usr/src/xcache-2.0.0/utils.c:589: xc_sandbox_error_cb: Assertion `sandbox != ((void *)0)' failed.
[Thu Mar 28 09:51:57 2013] [notice] child pid 1643 exit signal Aborted (6)
httpd: /usr/src/xcache-2.0.0/utils.c:589: xc_sandbox_error_cb: Assertion `sandbox != ((void *)0)' failed.
[Thu Mar 28 09:52:32 2013] [notice] child pid 1724 exit signal Aborted (6)
httpd: /usr/src/xcache-2.0.0/utils.c:589: xc_sandbox_error_cb: Assertion `sandbox != ((void *)0)' failed.
[Thu Mar 28 09:55:21 2013] [notice] child pid 1672 exit signal Aborted (6)
httpd: /usr/src/xcache-2.0.0/utils.c:589: xc_sandbox_error_cb: Assertion `sandbox != ((void *)0)' failed.
[Thu Mar 28 09:55:56 2013] [notice] child pid 1471 exit signal Aborted (6)
httpd: /usr/src/xcache-2.0.0/utils.c:589: xc_sandbox_error_cb: Assertion `sandbox != ((void *)0)' failed.
[Thu Mar 28 09:56:49 2013] [notice] child pid 1753 exit signal Aborted (6)
[Thu Mar 28 09:58:29 2013] [notice] child pid 1810 exit signal Segmentation fault (11)
[Thu Mar 28 09:58:29 2013] [notice] child pid 1877 exit signal Segmentation fault (11)
httpd: /usr/src/xcache-2.0.0/utils.c:589: xc_sandbox_error_cb: Assertion `sandbox != ((void *)0)' failed.
[Thu Mar 28 10:01:34 2013] [notice] child pid 1844 exit signal Segmentation fault (11)
[Thu Mar 28 10:01:34 2013] [notice] child pid 1913 exit signal Aborted (6)
[Thu Mar 28 10:01:34 2013] [notice] child pid 1941 exit signal Segmentation fault (11)
[Thu Mar 28 10:01:36 2013] [notice] child pid 2007 exit signal Segmentation fault (11)
[Thu Mar 28 10:01:37 2013] [notice] child pid 2035 exit signal Segmentation fault (11)
[Thu Mar 28 10:01:37 2013] [notice] child pid 2036 exit signal Segmentation fault (11)

达到最大客户端之前的 APC 错误日志(从一次重启到另一次重启):

[Thu Mar 28 19:17:10 2013] [notice] Apache/2.2.24 (Unix) mod_ssl/2.2.24 OpenSSL/1.0.0-fips DAV/2 PHP/5.2.17 configured -- resuming normal operations
[Thu Mar 28 19:21:40 2013] [notice] child pid 1356 exit signal Segmentation fault (11)
[Thu Mar 28 19:22:41 2013] [notice] child pid 1520 exit signal Segmentation fault (11)
[Thu Mar 28 19:22:42 2013] [notice] child pid 1330 exit signal Segmentation fault (11)
[Thu Mar 28 19:22:42 2013] [notice] child pid 1518 exit signal Segmentation fault (11)
[Thu Mar 28 19:22:46 2013] [notice] child pid 1967 exit signal Segmentation fault (11)
[Thu Mar 28 19:22:46 2013] [notice] child pid 1968 exit signal Segmentation fault (11)
[Thu Mar 28 19:22:49 2013] [notice] child pid 1939 exit signal Segmentation fault (11)
[Thu Mar 28 19:22:50 2013] [notice] child pid 2034 exit signal Segmentation fault (11)
[Thu Mar 28 19:22:51 2013] [notice] child pid 2062 exit signal Segmentation fault (11)
[Thu Mar 28 19:22:57 2013] [notice] child pid 2091 exit signal Segmentation fault (11)
[Thu Mar 28 19:22:58 2013] [notice] child pid 2090 exit signal Segmentation fault (11)
[Thu Mar 28 19:25:34 2013] [notice] caught SIGTERM, shutting down
[Thu Mar 28 19:25:37 2013] [notice] SSL FIPS mode disabled
[Thu Mar 28 19:25:37 2013] [warn] RSA server certificate CommonName (CN) `localhost' does NOT match server name!?
[Thu Mar 28 19:25:37 2013] [warn] Init: Name-based SSL virtual hosts only work for clients with TLS server name indication support (RFC 4366)
[Thu Mar 28 19:25:37 2013] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Thu Mar 28 19:25:38 2013] [notice] SSL FIPS mode disabled
[Thu Mar 28 19:25:38 2013] [warn] RSA server certificate CommonName (CN) `localhost' does NOT match server name!?
[Thu Mar 28 19:25:38 2013] [warn] Init: Name-based SSL virtual hosts only work for clients with TLS server name indication support (RFC 4366)
[Thu Mar 28 19:25:38 2013] [notice] Apache/2.2.24 (Unix) mod_ssl/2.2.24 OpenSSL/1.0.0-fips DAV/2 PHP/5.2.17 configured -- resuming normal operations

来自 PHP 信息的一点点:

System  Linux xxx.xxxxx.com 2.6.32-358.0.1.el6.x86_64 #1 SMP Wed Feb 27 06:06:45 UTC 2013 x86_64
Build Date  Mar 17 2013 12:55:14
Configure Command   './configure' '--with-apxs2' '--with-curl=/usr/local/lib' '--with-gd' '--with-ttf' '--with-gettext' '--with-jpeg-dir=/usr/local/lib' '--with-freetype-dir=/usr/local/lib' '--with-kerberos' '--with-openssl' '--with-mcrypt' '--with-mhash' '--with-mysql=/usr' '--with-mysqli=/usr/bin/mysql_config' '--with-pdo-mysql=/usr' '--with-pcre-regex=/usr/local' '--with-pear' '--with-png-dir=/usr/local/lib' '--with-xsl' '--with-zlib' '--with-zlib-dir=/usr/local/lib' '--with-iconv=/usr/local' '--enable-bcmath' '--enable-calendar' '--enable-exif' '--enable-ftp' '--enable-gd-native-ttf' '--enable-magic-quotes' '--enable-safe-mode' '--enable-soap' '--enable-sockets' '--enable-mbstring' '--enable-zip' '--enable-wddx'
Server API  Apache 2.0 Handler
Virtual Directory Support   enabled
Configuration File (php.ini) Path   /usr/local/lib
Loaded Configuration File   /usr/local/lib/php.ini
Scan this dir for additional .ini files     (none)
additional .ini files parsed    (none)
PHP API     20041225
PHP Extension   20060613
Zend Extension  220060519
Debug Build     no
Thread Safety   enabled
Zend Memory Manager     enabled
IPv6 Support    enabled
Registered PHP Streams  https, ftps, compress.zlib, php, file, data, http, ftp, zip
Registered Stream Socket Transports     tcp, udp, unix, udg, ssl, sslv3, sslv2, tls
Registered Stream Filters   zlib.*, convert.iconv.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed 

APC 设置:

enabled
Version     3.1.13
APC Debugging   Disabled
MMAP Support    Enabled
MMAP File Mask  no value
Locking type    pthread read/write Locks
Serialization Support   php
Revision    $Revision: 327136 $
Build Date  Mar 28 2013 12:40:18

php -v:

PHP 5.2.17 (cli) (built: Mar 17 2013 12:55:24) 
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies

httpd -V:

Server version: Apache/2.2.24 (Unix)
Server built:   Mar 10 2013 09:18:00
Server's Module Magic Number: 20051115:31
Server loaded:  APR 1.4.6, APR-Util 1.4.1
Compiled using: APR 1.4.6, APR-Util 1.4.1
Architecture:   64-bit
Server MPM:     Worker
  threaded:     yes (fixed thread count)
    forked:     yes (variable process count)
Server compiled with....
 -D APACHE_MPM_DIR="server/mpm/worker"
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=128
 -D HTTPD_ROOT="/etc/httpd"
 -D SUEXEC_BIN="/usr/sbin/suexec"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="conf/mime.types"
 -D SERVER_CONFIG_FILE="conf/httpd.conf"

有什么想法吗?!我会奖励 50 :)

【问题讨论】:

  • 我不知道是什么导致了问题,但我会尝试一些方法。移至 php 的快速 cgi 配置以将其与 apache 隔离(这可能意味着您需要移至 php 5.3.x)。如果无法升级 php,可以尝试常规的 cgi 配置。
  • 一个月前我参加了 CGI。非常糟糕的表现。很坏。而且没有办法使用操作码缓存!所以我搬到了 mod_php。我不喜欢去以前的地方:),但无论如何谢谢。
  • fcgi 比 mod_php 和 cgi 都好。但它只支持在 php 5.3.3 及更高版本中没有补丁。但是你仍然可以在 php-fpm 下找到早期版本的补丁。
  • @datasage 好吧,PHP 5.2 本身已经 2 年多没有得到支持了,所以升级应该没什么大不了的。不过,比 fcgi 的“更好”更具体的东西会很好……
  • @datasage 顺便提一下,OP 提到了mod_ruid2,我没听说过,但它是一个安全模块,还有is incompatible with fcgi

标签: php linux apache2 apc xcache


【解决方案1】:

从您的服务器状态页面的外观来看,您正在尝试使用线程化的 Apache MPM 作为 mod_php 运行 PHP。许多 PHP 扩展,可能包括 APC 和 Xcache,都不是线程安全的。因此,它们会在负载下频繁崩溃。

您需要将 Apache 切换到 prefork MPM,或者将 PHP 作为 CGI 或 FastCGI 运行。

【讨论】:

  • 出于兴趣,是什么线索导致您得出这个结论?我什至认为分叉前都在谈论“工人”......
  • 不过,如果你是对的,它看起来也像 it's incompatible with mod_ruid2
  • 线索是工人在状态页面上的显示方式。 Prefork worker 一直显示在整个页面中,线程 MPM 只出现在中途。
  • 服务器在工作线程中,它说线程和分叉都是肯定的。我不熟悉这个分叉/工人的东西。但在状态页面中有很多 .我在这里复制时忽略的项目。
  • 如何将 Apache 切换到 prefork MPM?有文章或资料吗?
猜你喜欢
  • 2011-08-30
  • 2015-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多