Apache-2.4

apache 2.4 和 PHP 5.6.14-0+deb8u1 出錯,使用 fpm

  • December 9, 2015

我有一台 Vagrant 機器:

  • Apache/2.4.10 (Debian)
  • PHP 5.6.14-0+deb8u1 和 PHP-FPM。

在某些情況下,我會收到此錯誤:500 Internal Server Error。

我在 php5-fpm.log 中有這個消息

[09-Dec-2015 20:01:24] WARNING: [pool www] child 608 exited on signal 11 (SIGSEGV) after 368.307577 seconds from start

在 error.log 文件中我有這個消息:

[Wed Dec 09 20:01:24.944748 2015] [fastcgi:error] [pid 535:tid 140236008924928] (104)Connection reset by peer: [client 192.168.33.1:57201] FastCGI: comm with server "/usr/lib/cgi-bin/php5-fcgi" aborted: read failed
[Wed Dec 09 20:01:24.945014 2015] [fastcgi:error] [pid 535:tid 140236008924928] [client 192.168.33.1:57201] FastCGI: incomplete headers (0 bytes) received from server "/usr/lib/cgi-bin/php5-fcgi"

我檢查了我的 php.ini 以更新如下選項:

max_execution_time = 360
max_input_time = 180
memory_limit = 512M

這是我的 opcache 文件配置:

zend_extension=opcache.so
opcache.enable=0 ; for now disabled
opcache.enable_cli=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=2000  ; Using "find /home -type f -print | grep php | wc -l" produced 226540 php files.
opcache.max_wasted_percentage=5
opcache.use_cwd=1
opcache.validate_timestamps=0
opcache.revalidate_freq=60
opcache.fast_shutdown=1

這是我的 php5-fpm.conf

<IfModule mod_fastcgi.c>
   AddHandler php5-fcgi .php
   Action php5-fcgi /php5-fcgi
   Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
   FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -socket /var/run/php5-fpm.sock -pass-header Authorization -idle-timeout 3600
   <Directory /usr/lib/cgi-bin>
       Require all granted
   </Directory>
</IfModule>

我已閱讀有關該錯誤的資訊,但我沒有找到解決該錯誤的明確方法,或者不知道該應用程序發生了什麼以返回此錯誤。

謝謝。

奧斯卡

看來您的腳本已超過 max_execution_time。也許是 360 年代

獲取哪個函式消耗了大部分執行時間可能非常有用。可以使用php-fpm的慢日誌。

在您的池文件 (/etc/php5/fpm/pool.d/www.conf) 中查找:

  • ‘slowlog’,並添加一個日誌文件,如:’/var/log/php-fpm/www.log.slow’
  • ‘request_slowlog_timeout’,並添加一個時間,如:’10s’

重新啟動 php-fpm,tailf 這個文件,也許你可以追踪你的巨大功能。

從日誌條目來看,這對我來說似乎是一個超時問題。

假設您能夠提供一些 PHP 頁面,並且您報告的錯誤只有一個頁面,我會嘗試剝離頁面上的程式碼,直到您找到可能導致超時的塊並從那裡開始工作。也許您有一個需要改進的數據庫查詢,或者您正在引用一個沒有響應的外部 Web 服務。

引用自:https://serverfault.com/questions/741961