apache停止响应然后崩溃

问题描述:

Apache(2.4.25 FPM/FastCGI)在我的wordpress多站点网站上停止响应并崩溃一段时间后。apache停止响应然后崩溃

由于某种原因,它运行良好的几天,直到我改变了使用这个脚本github.com/interconnectit/Search-Replace-DB(可能不是原因)的WordPress的(亩)域。

重新启动后,它可以工作大约一个小时,然后再次窒息。

我已经添加了一个mysql慢查询日志,但它是空的。

Apache的error_log中有多处错误,像这样的:

[Wed Sep 06 08:50:27.941819 2017] [proxy_fcgi:error] [pid 25444:tid 140610719610624] (70007)The timeout specified has expired: [client x.x.x.x:53398] AH01075: Error dispatching request to : (polling) 

偶尔出现这个错误太:

[Wed Sep 06 09:13:33.296777 2017] [core:notice] [pid 10710:tid 140611211331392] AH00051: child pid 25582 exit signal Segmentation fault (11), possible coredump in /opt/bitnami/apache2 

另一个偶然的出错(预期由于多个AH01075超时错误):

[Mon Sep 04 20:18:58.758718 2017] [mpm_event:error] [pid 19928:tid 140675798046528] AH00484: server reached MaxRequestWorkers setting, consider raising the MaxRequestWorkers setting 

停止mysql服务器杀死我的网站,但似乎保持apache w好的,至少在我测试过的一两个小时内。

是457452在以下进程列表中mysqld.bin的值是否正常? (PS -e -orss =,= ARGS |排序-b -k1,1n | PR - TW $柱)

2128 /sbin/init 
2400 php-fpm: master process (/opt/bitnami/php/etc/php-fpm.conf) 
3840 -bash 
4244 sshd: ubuntu [priv] 
6928 /usr/bin/gonit 
11036 /opt/bitnami/apache2/bin/httpd.bin -f /opt/bitnami/apache2/conf/httpd.conf -DDISABLE_BANNER 
11320 /opt/bitnami/apache2/bin/httpd.bin -f /opt/bitnami/apache2/conf/httpd.conf -DDISABLE_BANNER 
11364 /opt/bitnami/apache2/bin/httpd.bin -f /opt/bitnami/apache2/conf/httpd.conf -DDISABLE_BANNER 
11592 /opt/bitnami/apache2/bin/httpd.bin -f /opt/bitnami/apache2/conf/httpd.conf -DDISABLE_BANNER 
20592 /opt/bitnami/apache2/bin/httpd.bin -f /opt/bitnami/apache2/conf/httpd.conf -DDISABLE_BANNER 
57668 php-fpm: pool wordpress 
57716 php-fpm: pool wordpress 
65252 php-fpm: pool wordpress 
67608 php-fpm: pool wordpress 
68776 php-fpm: pool wordpress 
457452 /opt/bitnami/mysql/bin/mysqld.bin --defaults-file=/opt/bitnami/mysql/my.cnf --basedir=/opt/bi 

PHP版本30年6月5日

mysql.bin版14.14 DISTRIB 36年6月5日

Ubuntu的14.04.5(上AWS bitnami图像)

内存使用而阿帕奇没有响应:使用:992mb的883mb

的php.ini脚本memory_limit的= 128M

enter image description here

+0

哪个操作系统?崩溃时的内存使用情况如何?最后,您是否看到内核日志中有任何错误? –

+1

值(如果有的话)相当低。但是由于你的错误看起来像一个非OOMkilled内存短缺......有多少内存可用? – LSerni

+0

@LSerni总共1GB,php脚本memory_limit = 128M,由于某些原因,它运行良好几天,直到我改变使用这个脚本的WordPress的域名https://github.com/interconnectit/Search-Replace-DB(可能不是原因) – ramiwi

有点长,把它放在评论,所以答复作为答案。

你记录任何PHP错误?从你提出什么,到目前为止,我的理论将是:

  1. 您使用该脚本来执行搜索&取代的分贝,但它执行的不好造成畸形或损坏的数据。
  2. 这会导致您的PHP脚本依赖于mysql由于数据格式不正确或损坏而失灵。
  3. 因为你的php在fcgi上没有响应,你的apache会等待它并持有资源。
  4. 所有的请求都挂起,现在你用完了资源并开始分段。
  5. 然后,愚蠢的apache,看到你没有计算孩子,要求你提高它并没有意识到你已经无法理解物理资源。典型的apache ...
  6. 因为apache现在没有空闲的孩子,所以它不能再接受任何请求,并且看起来好像所有的apache都被破坏,尽管它只是被糟糕的fcgi进程阻塞了。

如果我的理论是正确的,你应该。

  1. 检查没有任何MySQL数据的损坏

  2. 检查是在MySQL替换的数据是如你所预期的

  3. 检查PHP错误日志,因为他们应该被记录如果可以的话。

  4. 如果仅仅清理数据是不够的,您应该隔离实际上造成堵塞的原因的PHP进程并将其删除。理想情况下,无论数据有多糟糕,php程序都应该干净地死去。

祝你好运狩猎。

+1

你说得对。我不知道什么数据被损坏,但恢复到旧的数据库解决了这个问题。 – ramiwi