উজান থেকে রেসপন্স শিরোনাম পড়ার সময় এনগিনেক্স ত্রুটিগুলি "রিকভ () ব্যর্থ (104: পিয়ার দ্বারা সংযোগটি পুনরায় সেট করা)"


44

আমার একটি সার্ভার রয়েছে যা 3 ই অক্টোবর 2013 সকাল 10:50 এ ঠিকঠাক চলছিল যখন এটি ক্লায়েন্টকে মাঝে মাঝে "502 ব্যাড গেটওয়ে" ত্রুটিগুলি ফিরিয়ে দেওয়া শুরু করে।

ব্রাউজারের 5 টির মধ্যে অনুরোধের মধ্যে প্রায় 4 টি সফল হয় তবে 5 টির মধ্যে প্রায় 1 টি 502 দিয়ে ব্যর্থ হয়।

Nginx ত্রুটি লগ এই শত শত ত্রুটি রয়েছে;

2013/10/05 06:28:17 [error] 3111#0: *54528 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 66.249.66.75, server: www.bec-components.co.uk  request: ""GET /?_n=Fridgefreezer/Hotpoint/8591P;_i=x8078 HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "www.bec-components.co.uk"

তবে পিএইচপি ত্রুটি লগটিতে কোনও মিলের ত্রুটি থাকে না।

কেন এটি সংযোগটি পুনরায় সেট করছে সে সম্পর্কে আমাকে আরও তথ্য দেওয়ার জন্য পিএইচপি পাওয়ার কোনও উপায় আছে?

এটি nginx.conf;

user              www-data;
worker_processes  4;
error_log         /var/log/nginx/error.log;
pid               /var/run/nginx.pid;

events {
   worker_connections  1024;
}

http {
  include          /etc/nginx/mime.types;
  access_log       /var/log/nginx/access.log;

  sendfile               on;
  keepalive_timeout      30;
  tcp_nodelay            on;
  client_max_body_size   100m;

  gzip         on;
  gzip_types   text/plain application/xml text/javascript application/x-javascript text/css;
  gzip_disable "MSIE [1-6]\.(?!.*SV1)";

  include /gvol/sites/*/nginx.conf;

}

এবং এটি .confএই সাইটের জন্য;

server {

  server_name   www.bec-components.co.uk bec3.uk.to bec4.uk.to bec.home;
  root          /gvol/sites/bec/www/;
  index         index.php index.html;

  location ~ \.(js|css|png|jpg|jpeg|gif|ico)$ {
    expires        2592000;   # 30 days
    log_not_found  off;
  }

  ## Trigger client to download instead of display '.xml' files.
  location ~ \.xml$ {
    add_header Content-disposition "attachment; filename=$1";
  }

   location ~ \.php$ {
      fastcgi_read_timeout  3600;
      include               /etc/nginx/fastcgi_params;
      keepalive_timeout     0;
      fastcgi_param         SCRIPT_FILENAME  $document_root$fastcgi_script_name;
      fastcgi_pass          127.0.0.1:9000;
      fastcgi_index         index.php;
   }
}

## bec-components.co.uk ##
server {
   server_name   bec-components.co.uk;
   rewrite       ^/(.*) http://www.bec-components.co.uk$1 permanent;
}

সেদিন কী পরিবর্তন হয়েছিল? আপনার অ্যাপ্লিকেশন আপডেট করেছেন বা পিএইচপি? আপনার আবেদন কি? আপনি কি পিএইচপি-এফপিএম-এ ডিবাগিং সক্ষম করেছেন?
পোথি কলিমুথু

সেদিন কিছুই পরিবর্তন হয়নি। সার্ভার কনফিগারেশন পরিবর্তন করা হয়নি, বা কোনও পিএইচপি স্ক্রিপ্ট ছিল না। এটি ডিস্কের জায়গার বাইরে নয়। আমার অ্যাপ্লিকেশনটি কেবল PHPস্ক্রিপ্টগুলির একটি সেট । আমি ব্যবহার করছি না php-fpm, আমি শুধু চলছি php-fastcgiকরে php-cgi -b 127.0.0.1:9000। এটি 3 বছর ধরে দোষ ছাড়াই কাজ করে চলেছে। কেন এটি এই ইস্যুটি বিকশিত করেছে তা আমি কাজ করতে পারি না।
নাইজেল অ্যাল্ডারটন

আমি সম্প্রতি একইরকম সমস্যা পেয়েছি যেখানে এনগিনেক্স আপয়ার থেকে প্রতিক্রিয়া শিরোনামটি পড়ার সময় পিয়ার দ্বারা সংযোগ পুনরায় সেট করার বিষয়ে অভিযোগ করছিল, আমার ক্ষেত্রে এটি ছিল ইউডাব্লুএসজিআই যা আসল সমস্যা ছিল, uWSGI পুনরায় আরম্ভ করার বিষয়টি আমার জন্য সমস্যাটি স্থির করে, কেন এটি ঘটছে তা আলাদা is সমস্যা.
এপিজেড

আপনার প্রবাহের পরিষেবা ( php-cgi -b 127.0.0.1:9000) বিরতিহীনভাবে ব্যর্থ হচ্ছে, সম্ভবত ট্র্যাফিক বৃদ্ধি এবং সংস্থার অভাবে।
লিনাক্সডেভিপস

উত্তর:


22

আমি যদি সর্বদা বিশ্বাস করি যদি আমার ওয়েব সার্ভারগুলি আমাকে বলছে: 502 Bad Gateway

  • আপনার ফাস্টসিজি / এনগিনেক্স - প্রক্রিয়াটির আপটাইম কী?
  • আপনি নেটওয়ার্ক সংযোগ নিরীক্ষণ করবেন?
  • আপনি কি সেই দিনটির আশেপাশে দর্শকদের গণনার পরিবর্তনের বিষয়টি নিশ্চিত / অস্বীকার করতে পারবেন?

এর মানে কী:

  • আপনি ফাস্টসিজি-প্রক্রিয়াটি এনজিএনএক্স দ্বারা অ্যাক্সেসযোগ্য নয়; হয় ধীরে ধীরে বা সামঞ্জস্যপূর্ণ না। খারাপ গেটওয়ের অর্থ: এনগিনেক্স 127.0.0.1:9000 নির্ধারিত রিসোর্সটিতে ফাস্টসিগি_পাস করতে পারে না; খুব নির্দিষ্ট মুহুর্তে

  • আপনার জন্মগত ত্রুটি-লগগুলি সব বলে:

recv() failed 
    -> nginx failed

(104: Connection reset by peer) while reading response header from upstream, 
    -> no complete answer, or no answer at all
upstream: "fastcgi://127.0.0.1:9000", 
    -> who is he, who failed???

আমার সীমিত পোভ থেকে আমি পরামর্শ দেব:

  • আপনার ফাস্টসিজি_প্রসেস / সার্ভারটি পুনরায় চালু করুন
  • আপনার অ্যাক্সেস-লগ চেক করুন
  • ডিবাগ-লগ সক্ষম করুন

ঠিক আছে. আমার ওয়েব সার্ভারগুলি আমাকে কী বলছে?
নাইজেল অল্ডার্টন

আমার সম্পাদনা দেখুন (এর অর্থ কী)
সেখান থেকে লোকটি

2
আমি দেখতে পাচ্ছি, তাই Gatewayএই ক্ষেত্রে পিএইচপি সার্ভার। ধন্যবাদ.
নাইজেল অ্যাল্ডারটন

restart your fastcgi_process / serverআমাকে কী সাহায্য করেছে, ধন্যবাদ
রিয়েলটিবো

11

আমি জানি এই বিষয়টি পুরানো, তবে এটি মাঝে মাঝে পপ আপ হতে থাকে, তাই ওয়েবে উত্তর খুঁজতে গিয়ে আমি নিম্নলিখিত তিনটি সম্ভাবনা নিয়ে হাজির হয়েছি:

  1. একটি প্রোগ্রামিং ত্রুটি কখনও কখনও পিএইচপি-এফপিএম সেগফোল্টিং হয়, যার ফলস্বরূপ অর্থ হয় যে এনজিনেক্সের সাথে সংযোগ বিচ্ছিন্ন হয়ে যাবে। এটি সাধারণত কমপক্ষে কিছু লগ এবং / অথবা কোর ডাম্পগুলি ছেড়ে যায়, যা আরও বিশ্লেষণ করা যেতে পারে।
  2. কোনও কারণে পিএইচপি কোনও সেশন ফাইল (সাধারণত session.save_path = "/var/lib/php/sessions":) লিখতে সক্ষম হচ্ছে না । এটি খারাপ অনুমতি, খারাপ মালিকানা, খারাপ ব্যবহারকারীর / গোষ্ঠী, বা সেই ডিরেক্টরিতে ইনডগুলি চালিয়ে যাওয়ার মতো আরও গোপনীয় / অস্পষ্ট সমস্যা (বা এমনকি একটি সম্পূর্ণ ডিস্ক!) হতে পারে। এটি সাধারণত বহু কোর ডাম্পগুলি প্রায় ছাড়বে না এবং সম্ভবত পিএইচপি ত্রুটিযুক্ত লগগুলিতেও কিছু থাকবে না।
  3. ডিবাগ করা আরও জটিল: একটি এক্সটেনশানটি খারাপ আচরণ করা (মাঝেমধ্যে কোনওরকম অভ্যন্তরীণ সীমাতে আঘাত করা বা কোনও বাগ যা পুরো সময় চালিত হয় না), সেগফাল্টিং এবং পিএইচপি-এফপিএম প্রক্রিয়াটিকে সাথে নামিয়ে আনে - এইভাবে এনজিনেক্সের সাথে সংযোগ বন্ধ করে দেয় । সাধারণ অপরাধীরা হ'ল এপিসি, মেমক্যাচ / ডি ইত্যাদি (

+1 আমার ক্ষেত্রে এটি # 1 ছিল - প্রোগ্রামিং ত্রুটি।
নিম্বুজ

আমরা এই ত্রুটিতে ছুঁড়েছি এবং নিউ রিলিক এপিএম পিএইচপি এক্সটেনশানটি অক্ষম করার ফলে আরও একটি সুনির্দিষ্ট ত্রুটি প্রকাশ পেয়েছে যা আমাদের সমস্যার সমাধান করতে দিয়েছে: [29-Jan-2018 16:47:48 ইউটিসি] পিএইচপি মারাত্মক ত্রুটি: অনুমোদিত মেমরির আকার 805306368 বাইট বিক্রেতার / ম্যাজেন্টো / মডিউল-কনফিগারযোগ্য-পণ্য / মূল্য নির্ধারণ / মূল্য / কনফিগারযোগ্য রেগুলারপ্রিস.এফপি 142 [29-জানু-2018 16:47:48 ইউটিসি] পিএইচপি মারাত্মক ত্রুটি: অনুমোদিত মেমরির আকারে (262144 বাইট বরাদ্দ দেওয়ার চেষ্টা করা) 805306368 বাইট অবসন্ন (323584 বাইট বরাদ্দ দেওয়ার চেষ্টা করা হয়েছে) লাইনে অজানাতে 0 আমার অনুমান যে নিউ রিলিক "অজানা" পথে শ্বাসরোধ করেছে।
এরিক হানসেন

7

এটি পেয়েও রইল। opcacheআপনি যদি এটি ব্যবহার করেন তবে মেমরির সীমা বাড়িয়ে এটি সমাধান করুন (এপিসির প্রতিস্থাপন)। যখনই ক্যাশে খুব বেশি পূর্ণ হয়ে যায় তখন পিএইচপি-এফপিএম সংযোগগুলি বাদ দেয় বলে মনে হয়। ShgnInc এর উত্তর অল্প সময়ের জন্য এটি ঠিক করার কারণও এটি।

সুতরাং ফাইলটি /etc/php5/fpm/php.ini(বা আপনার বিতরণের সমতুল্য) সন্ধান করুন এবং memory_consumptionআপনার সাইটের যে স্তরের প্রয়োজন তা বাড়ান । অক্ষম opcacheকরাও কাজ করতে পারে।

[opcache]
opcache.memory_consumption = 196 

2

আপনি এই গিটটি গিথুবে বিবেচনা করতে চাইতে পারেন: https://gist.github.com/amichaelgrant/90d99d7d5d48bf8fd209

আমি একই ধরণের পরিস্থিতির মুখোমুখি হয়েছিলাম, যখন আমি আমার প্রবাহের সার্ভারগুলির জন্য ত্রুটিযুক্ত লগগুলি পরীক্ষা করেছি তারা কিছু উলিমিত ত্রুটির খবর দিচ্ছিল তাই আমি এটি বাড়িয়ে 1000000 (উভয় প্রবাহ এবং এনগিনেক্স বাক্সে) করেছি এবং সবকিছু ঠিকঠাক কাজ করেছে


2

আমার একই সমস্যার ক্ষেত্রে, আমি কেবল php-fpmপরিষেবাটি পুনরায় চালু করব যাতে এটি সমাধান হয়ে যায়।

sudo service php5-fpm restart

বা বিপুল অনুরোধের কারণে কিছু সময় এই সমস্যা দেখা দেয়। ডিফল্টরূপে pm.max_requestsপিএইচপি 5-এফপিএম এ 100 বা নীচে হতে পারে।

এটির সমাধানের জন্য এর মূল্য বাড়ানো আপনার সাইটের অনুরোধের উপর নির্ভর করে, উদাহরণস্বরূপ 500।

এবং আপনার পরে পরিষেবাটি পুনরায় চালু করতে হবে


2

আমার ক্ষেত্রে, xdebug এক্সটেনশন অক্ষম করা সাহায্য করেছিল।


তবুও, আমার ক্ষেত্রে আমি একটি ব্রেকপয়েন্টের জন্য একটি শর্ত স্থাপন করেছি এবং সেই মুহুর্তে আমি ব্রেক ব্রেকপয়েন্টটি অক্ষম করেছিলাম ত্রুটিটি চলে গেছে।
রোমান204

1

আমার সবেমাত্র একই সমস্যা ছিল:

আপনি 9000 পোর্টে পিএইচপি-এফপিএম-এ সংযুক্ত হন ((ফাস্টসিজি: //127.0.0.1: 9000)

আমার সার্ভারে উবুন্টুতে স্ট্যান্ডার্ড কনফিগারেশন হ'ল:

/etc/php/7.0/fpm/pool.d/www.conf:

listen = /run/php/php7.0-fpm.sock

আপনাকে এটিতে পরিবর্তন করতে হবে:

listen = 0.0.0.0:9000

আমার ক্ষেত্রে, আমি 1/2 মাস আগে আমার সার্ভারটি আপডেট করেছিলাম, আমার পোশাকের কনফিগারেশনটি ডিফল্টর সাথে ওভাররাইট করে। এখন পিএইচপি-এফপিএম পুনরায় আরম্ভ করার পরে এই ত্রুটি বিলম্বের সাথে কার্যকর হয়েছে।


1

আমার জন্য এটি ছিল সার্ভারটি স্মৃতি থেকে দূরে ছিল এবং পিএইচপি-এফপিএম ওওএম ঘাতক দ্বারা নিহত হয়েছিল। সমাধানটি ছিল সার্ভারের মেমরির পরিমাণ বাড়ানো।


1

আমার জন্য এটি ছিল কারণ পিএইচপি-এফপিএম max_childrenসীমাটি হিট করছে । প্রশ্নযুক্ত পুলের জন্য পিএইচপি-এফপিএম লগ আমাকে সঠিক দিকে নির্দেশ করেছে


0

যদি কোনও পিএইচপি-এফপিএম প্রক্রিয়া তার বরাদ্দকৃত মেমরির সীমা অতিক্রম করে তবে এই সমস্যাটিও দেখা দিতে পারে। যখন এটি ঘটে তখন এনজিআইএনএক্স এবং পিএইচপি-এফপিএম এর সংযোগ বিচ্ছিন্ন হয়ে যায় এবং এনজিআইএনএক্স একটি প্রদান করে 502 Bad Gateway। পিএইচপি-এফপিএম প্রক্রিয়া মেমরি সীমাটি memory_limitভেরিয়েবল দ্বারা নিয়ন্ত্রিত হয় । এটি php_admin_value[memory_limit]পিএইচপি-এফপিএম কনফিগারেশন ফাইলের সাথে সেট করা যেতে পারে ।

এটি লক্ষণীয় যে মেমরি সীমাটি প্রতি স্ক্রিপ্টের ভিত্তিতে প্রযোজ্য । সঙ্গে nপিএইচপি-FPM প্রক্রিয়া, মোট মেমোরি ব্যবহার পর্যন্ত হতে পারে memory_limit * n। আপনার মেশিনে পর্যাপ্ত মেমরির হেডরুম রয়েছে তা পরীক্ষা করে দেখুন!

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.