2012-05-06 13 views
43

में मुझे subj के साथ कुछ त्रुटि है। सर्वर उच्च लोड नहीं होता है: ~ 15% सीपीयू, स्मृति के कई जीबी हैं, एचडीडी buisy नहीं है। लेकिन त्रुटि 502 लगभग 3% मामलों में फेंकता है।त्रुटि 502 nginx + php5-fpm

प्रोग्राम: डेबियन 6, nginx/0.7.62, php5-fpm (5.3.3-1)।

connect() to unix:/var/run/php5-fpm.sock failed 

PHP5-एफ पी एम के राज्य आमतौर पर इस तरह::

accepted conn: 41680 
pool:    www 
process manager: dynamic 
idle processes: 258 
active processes: 1 
total processes: 259 

मुझे लगता है कि, इसका मतलब यह लोड हो रहा है उच्च नहीं है

nginx की error.log में इस त्रुटि है।

मैंने बैकलॉग पैराम्स में वृद्धि की है: sysctl - net.core.somaxconn = 5000 में, php-fpm पूल में - listen.backlog = 5000. कोई प्रभाव नहीं।

/etc/nginx/nginx.conf

user www-data; 
worker_processes 8; 
timer_resolution 100ms; 
worker_rlimit_nofile 20240; 
worker_priority -5; 

error_log /var/log/nginx/error.log; 
pid  /var/run/nginx.pid; 

events { 
    worker_connections 2048; 
    use epoll; 
    # multi_accept on; 
} 

http { 
    include  /etc/nginx/mime.types; 

    access_log /var/log/nginx/access.log; 

    sendfile  on; 
    tcp_nopush  on; 

    #keepalive_timeout 0; 
    keepalive_timeout 65; 
    tcp_nodelay  on; 

    gzip on; 
    gzip_min_length 1100; 
    gzip_buffers 64 8k; 
    gzip_comp_level 3; 
    gzip_http_version 1.1; 
    gzip_proxied any; 
    gzip_types text/plain application/xml application/x-javascript text/css; 
    gzip_disable "MSIE [1-6]\.(?!.*SV1)"; 

    include /etc/nginx/conf.d/*.conf; 
    include /etc/nginx/sites-enabled/*; 

    client_max_body_size 100M; 
    server_tokens off; 
} 

/etc/nginx/php_location

fastcgi_pass unix:/var/run/php5-fpm.sock; 
fastcgi_index index.php; 
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name; 
fastcgi_buffers 256 128k; 
#fastcgi_buffer_size 16k; 
#fastcgi_busy_buffers_size 256k; 
fastcgi_connect_timeout 300s; 
fastcgi_send_timeout 300s; 
fastcgi_read_timeout 300s; 
include fastcgi_params; 

php-एफ पी एम पूल:

मैं एक विन्यास बोली

[www] 
listen = /var/run/php5-fpm.sock 
listen.backlog = 5000 
listen.owner = www-data 
listen.group = www-data 
listen.mode = 0666 
user = www-data 
group = www-data 
pm = dynamic 
pm.max_children = 1024 
pm.start_servers = 64 
pm.min_spare_servers = 64 
pm.max_spare_servers = 128 
pm.max_requests = 32000 
pm.status_path = /system/php5-fpm-status 
slowlog = /var/www/log/php-fpm.log.slow 
chdir = /var/www 

इस प्रणाली को अनुकूलित करने और इसे सभी सर्वर संसाधनों का उपयोग करने के लिए मैं क्या कर सकता हूं?

पीएस। मुझे खेद है, मेरी अंग्रेजी खराब है।

+2

मैं उबंटू 13.10 पर हूँ और PHP5-एफ पी एम के प्रवेश किसी भी तरह गलत ढंग से प्रस्तुत किया गया है कि क्या होता है ... वास्तव में, पुनः आरंभ लॉग ने कुछ भी नहीं कहा :) मुझे सीधे कमांड लाइन से डेमॉन चलाकर त्रुटि मिली, 'सुडो php5-fpm - -demonize --fpm-config/etc/php5/fpm/php-fpm.conf' – benjaoming

+7

बस अगर कोई php-fpm पूल फ़ाइल को खोज रहा है तो उसे /etc/php5/fpm/pool.d/www.conf पर फ़ाइल करें उबंटू 12.04.3 एलटीएस –

+0

उन लोगों के लिए जो इस प्रश्न पर गूंजते हैं: पहले इस समाधान को आजमाएं: http://stackoverflow.com/questions/23443398/nginx-error-connect-to-php5-fpm-sock-failed-13 -प्रमिशन-इनकार – Alexar

उत्तर

102

मुद्दा सॉकेट स्वयं है, उच्च लोड मामलों पर इसकी समस्याएं अच्छी तरह से जानी जाती हैं। कृपया यूनिक्स सॉकेट के बजाय टीसीपी \ IP कनेक्शन का उपयोग करें, उसके लिए आपको इन बदलाव करने की जरूरत: listen = 127.0.0.1:7777

  • में /etc/nginx/php_location साथ listen = /var/run/php5-fpm.sock की जगह

    php-एफ पी एम पूल विन्यास में
    • fastcgi_pass 127.0.0.1:7777;
  • +0

    पहले, यह इस तरह था - टीसीपी/आईपी सॉकेट का इस्तेमाल किया गया था। लेकिन स्थिति वही थी। मैं फिर से टीसीपी/आईपी सॉकेट का प्रयास करूंगा - देखेंगे, यह हमें क्या देता है। – andre487

    +2

    अब बहुत बेहतर है। इसके अलावा मैं कहना चाहता हूं कि संस्करण 5.4 में PHP को अपडेट करना बहुत अच्छा प्रभाव है। – andre487

    +0

    हाँ, यह चला गया है। nginx को संस्करण 1.1.1 9 में अद्यतन किया गया है। मैंने nginx पर कैशिंग के बारे में सोचा, लेकिन वर्तमान अनुप्रयोग में यह उपयोगी नहीं होगा। – andre487

    -6

    मैं एक ही मुद्दे के साथ fastcgi_pass unix:/var/run/php5-fpm.sock; की जगह है, लेकिन टीसीपी/आईपी के लिए सॉकेट से स्विच करना चाहते हैं नहीं किया। Php-fpm और nginx को पुनरारंभ करने से समस्या हल हो जाएगी।

    sudo /etc/init.d/php-fpm restart 
    sudo /etc/init.d/nginx restart 
    
    +1

    जब भी आपको किसी समस्या का सामना करना पड़ता है, तब भी एप्लिकेशन को पुनरारंभ करना, कभी भी समाधान नहीं माना जा सकता है। – GeekRide

    +0

    समस्या की आवृत्ति, और आवंटित संसाधनों की मात्रा के आधार पर - हाँ, यह एक समाधान हो सकता है। मौलिक बिंदु कि * सिस्टम को बेहतर डिजाइन किया जाना चाहिए * बेशक –

    +0

    @GeekRide रहता है यदि स्थिति ने सॉकेट कनेक्शन के उपयोग की मांग की, तो दिमित्रीवी ने कहा "उच्च लोड मामलों पर इसकी समस्याएं अच्छी तरह से जानी जाती हैं", हम करेंगे रणनीतिक रूप से सेवा को रीबूट करने के अलावा कोई अन्य विकल्प नहीं है। मुझे लगता है कि यह दुखद है कि बहुत से लोग इसे अनदेखा करते हैं क्योंकि वे कम उत्पादन लागत वाले वातावरण में काम कर रहे हैं। सुझाव के लिए –

    2

    Centos 7 पर, Plesk 12.5

    मैं इस समस्या थी के बाद मेरे harddisc पूरा हो गया था और कुछ सेवाओं में असफल रहा। अन्य डोमेन पूरी तरह से काम करते हैं, लेकिन उनमें से एक ने मुझे केवल 502 और टाइमआउट के समान ही नहीं दिया। Errorlog से:

    [crit] 3112#0: *65746768 connect() to 
    unix:///var/www/vhosts/system/sub.domain.de/php-fpm.sock failed 
    (2: No such file or directory) while connecting to upstream 
    

    इसे हल करने के लिए, मैं करने के लिए किया था (प्रथम स्थान उपलब्ध कराएं और उसके बाद) को पुनः आरंभ php-एफ पी एम और nginx - तो यह त्रुटि गायब हो गई!

    0

    नहीं बनाया इस फ़ाइल के लिए एकमात्र कारण पर /etc/php-fpm.d/www.conf

    बदलें विन्यास है सुनने = 127.0.0.1:9000

    सुनने =/var/रन के साथ

    /php-fpm/php-fpm.sock

    और फिर दोनों nginx और php-एफ पी एम

    +0

    मेरे पास वह रेखा है, दोनों को पुनरारंभ किया गया है लेकिन फ़ाइल अभी भी वहां नहीं है। Php5-fpm.log में कोई त्रुटि नहीं है – Alecz

    संबंधित मुद्दे