2014-10-02 14 views
10

PHP-FPM'yi küçümsemeye başlıyorum! hataları işlemede korkunç!Hata 502 php-fpm'de ayrıntılar olmadan

NetworkError: 502 Bad Gateway alıyorum ve hatalı satırı bulana kadar satır satırını elle yorumlamadığım için hatanın nerede olduğunu bilmeme rağmen, neden bu çizginin bir soruna neden olduğunu bilmiyorum.

Hataya neden olan satırın ne olduğunu sormadan önce, bu benim sorunum değil, benim sorunum, PHP'nin hatanın ne olduğunu söyleyememesi. Sadece 502 hatasıyla yanıt veriyor. İşte

benim yapılandırma

nginx sitesi

location ~ .+?\.php { 
    fastcgi_split_path_info ^(.+?\.php)/?(.*)$; 
    if (!-f $document_root$fastcgi_script_name) { 
     return 404; 
    } 
    include fastcgi_params; 
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
    fastcgi_param PATH_INFO $fastcgi_path_info; 
    fastcgi_param LOG_PATH /var/www/sites/api/logs; 
    fastcgi_param ENVIRONMENT dev; 
    fastcgi_buffer_size 128k; 
    fastcgi_buffers 254 16k; 
    fastcgi_busy_buffers_size 256k; 
    fastcgi_temp_file_write_size 256k; 
    proxy_intercept_errors on; 
    fastcgi_intercept_errors on; 
    fastcgi_pass unix:/var/run/php5-fpm.sock; 
    fastcgi_index index.php; 
} 

php.ini

[PHP] 
engine = On 
expose_php = Off 
max_execution_time = 30 
memory_limit = 128M 
default_socket_timeout = 5 
session.save_path = /var/www/session/ 
file_uploads = Off 
upload_tmp_dir = /tmp/php 
upload_max_filesize = 5M 
post_max_size = 5M 
max_file_uploads = 1 
date.timezone = 'UTC' 
disable_functions = phpinfo,exec,passthru,shell_exec,system,proc_open,popen,curl_multi_exec,parse_ini_file,show_source 
mail.add_x_header = Off 
sql.safe_mode = On 
cgi.force_redirect = 1 
allow_url_fopen = Off 
allow_url_include = Off 

error_reporting = E_ALL 
display_errors = On 
display_startup_errors = On 
html_errors = Off 
log_errors = On 
error_log = /var/log/php5-fpm.log 
log_errors_max_len = 1024 
ignore_repeated_errors = Off 
ignore_repeated_source = Off 
report_memleaks = On 
track_errors = On 

pool.d/www.conf

[www] 
listen = /var/run/php5-fpm.sock 
user = www-data 
group = www-data 
listen.owner = www-data 
listen.group = www-data 

pm = static 
pm.max_children = 600 
;pm.start_servers = 10 
;pm.min_spare_servers = 5 
;pm.max_spare_servers = 15 
pm.max_requests = 100 
;pm.status_path = /php_status 

;request_terminate_timeout = 5s 
;request_slowlog_timeout = 5s 
;slowlog = /var/log/php/fpm/domain.slowlog.log 

; Redirect worker stdout and stderr into main error log. If not set, stdout and 
; stderr will be redirected to /dev/null according to FastCGI specs. 
; Default Value: no 
catch_workers_output = yes 

php_flag[display_errors] = on 
php_flag[display_startup_errors] = on 
;php_flag[output_buffering] = off 

php_admin_value[error_log] = /var/log/php5-fpm.log 
php_admin_flag[log_errors] = on 

ve tüm i olsun Günlükler aşağıdaki

sitesi hata günlüğü

2014/10/02 14:34:50 [error] 25966#0: *9 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 109.70.40.213, server: www.example.com, request: "POST /v2/payments/payment/sale HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "www.example.cm", referrer: "http://boxshop.im/checkout" 

php hata günlüğü

[02-Oct-2014 14:44:26.023450] DEBUG: pid 25216, fpm_event_loop(), line 419: event module triggered 2 events 
[02-Oct-2014 14:44:26.023927] DEBUG: pid 25216, fpm_got_signal(), line 76: received SIGCHLD 
[02-Oct-2014 14:44:26.024044] WARNING: pid 25216, fpm_children_bury(), line 252: [pool www] child 25251 exited on signal 11 (SIGSEGV) after 1441.610042 seconds from start 
[02-Oct-2014 14:44:26.025943] NOTICE: pid 25216, fpm_children_make(), line 421: [pool www] child 26039 started 
[02-Oct-2014 14:44:26.026192] DEBUG: pid 25216, fpm_event_loop(), line 419: event module triggered 1 events 

güzel, Parse Error on line 234 güzel olurdu!

sinirli

+0

Bunu çözmeyi başardınız mı? –

+1

@JoelKoh Herhangi bir özel durum hatası günlüğe kaydedilmeden önce bu işlem çöküyor olabilir. Bu durumda hiçbir şey yapılamaz. –

+0

Bu "nginx site" sizin/etc/nginx/nginx.conf' veya '/ etc/nginx/site-available 'içindeki ana bilgisayarlardan biri midir? Bu yapılandırma ile nginx'i yeniden başlatmaya çalıştığımda, "konum" yönergesine izin verilmediğinden şikayetçi oluyor – mickadoo

cevap

7

Proses singal 11 (parçalama arızası) ile çıkıldı. Tipik olarak, bellek kullanımındaki bazı hatalar nedeniyle beklenmedik bir şekilde çökme süreci anlamına gelir ve php bu hatayı hiçbir şekilde ele alamaz. Apache + mod_php, apache + mod_fcgid veya başka bir yapılandırma kullanarak aynı hatayı alacaksınız.

Uygulamamda segfault, tüm yapılandırmalarda size yararlı bir hata mesajı vermiyor. Hata ayıklamanın tek gerçek yolu strace. Tek astarı tüm php süreçleri çalışan için strace takmak için: Hata çoğaltmak zor

strace -f -F -s1000 -t -T `ps aux | grep -E 'apache|php|httpd' | awk '{print "-p" $2}' | xargs` 

varsa, xdebug php-modülünü kullanabilirsiniz. Böyle yüklemeniz gerekir:

apt-get install php5-xdebug 

veya CentOS için

yum install php-pecl-xdebug 

. tüm işlemlerin otomatik izleme için config ekleyin:

xdebug.auto_trace=On 

Ve izlerini alırsınız, varsayılan yolu şudur:

xdebug.trace_output_dir => /tmp => /tmp 
xdebug.trace_output_name => trace.%c => trace.%c 

Yani iz adı /tmp/trace.$PID sahip olacaktır.xt

Burada, işlem çökmesinden önce en son çağrılan işlemi görebilmeniz gerekir.

İlgili konular