2017-09-06 162 views
0

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

回答

1

有點長,把它放在評論,所以答覆作爲答案。

你記錄任何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