এনজিআইএনএক্স: উজান থেকে প্রতিক্রিয়া শিরোনাম পড়ার সময় প্রবাহের সময় শেষ (110: সংযোগের সময়সীমা)


130

আমার কাছে পুমা আপস্ট্রিম অ্যাপ সার্ভার হিসাবে চলছে এবং আমার ব্যাকগ্রাউন্ড ডিবি ক্লাস্টার হিসাবে রিয়াক চলছে। যখন আমি একটি অনুরোধ প্রেরণ করি যে মানচিত্রটি প্রায় 25 কে ব্যবহারকারীদের জন্য ডেটাগুলির একটি অংশকে হ্রাস করে এবং এটি রিয়াক থেকে অ্যাপটিতে ফেরত দেয়, আমি এনগিনেক্স লগতে একটি ত্রুটি পেয়েছি:

উজান থেকে প্রতিক্রিয়া শিরোনাম পড়ার সময় upstream সময়সীমা শেষ (110: সংযোগের সময়সীমা শেষ)

যদি আমি একই অনুরোধের সাথে এনজিনেক্স প্রক্সি ছাড়াই আমার প্রবাহকে সরাসরি জিজ্ঞাসা করি তবে আমি প্রয়োজনীয় ডেটা পাই।

প্রক্সিটি প্রবেশ করার পরে Nginx সময়সীমা ঘটে।

**nginx.conf**

http {
    keepalive_timeout 10m;
    proxy_connect_timeout  600s;
    proxy_send_timeout  600s;
    proxy_read_timeout  600s;
    fastcgi_send_timeout 600s;
    fastcgi_read_timeout 600s;
    include /etc/nginx/sites-enabled/*.conf;
}

**virtual host conf**

upstream ss_api {
  server 127.0.0.1:3000 max_fails=0  fail_timeout=600;
}

server {
  listen 81;
  server_name xxxxx.com; # change to match your URL

  location / {
    # match the name of upstream directive which is defined above
    proxy_pass http://ss_api; 
    proxy_set_header  Host $http_host;
    proxy_set_header  X-Real-IP  $remote_addr;
    proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_cache cloud;
    proxy_cache_valid  200 302  60m;
    proxy_cache_valid  404      1m;
    proxy_cache_bypass $http_authorization;
    proxy_cache_bypass http://ss_api/account/;
    add_header X-Cache-Status $upstream_cache_status;
  }
}

এনগিনেক্সের একত্রে সময়সীমা নির্দেশিকা রয়েছে। আমি জানি না যে আমি কোনও গুরুত্বপূর্ণ অনুপস্থিত রয়েছি কিনা। কোন সাহায্যের অত্যন্ত প্রশংসা হবে....


এটি কেবল 600 এর পরে শেষ হওয়া উচিত? আপনি এটি সময় নকল করতে পারেন 127.0.0.1:3000 তে একটি টিসিপি সার্ভার স্থাপন করে যা কেবল সংযোগগুলি গ্রহণ করে এবং তাদের সাথে কিছুই করে না, এটি দেখতে যে কতক্ষণ সময় নেয়। এটি 600 এর
দশকের

উত্তর:


46

এটি ঘটে কারণ আপনার আপস্ট्रीमটি অনুরোধটির উত্তর দিতে খুব বেশি সময় নেয় এবং এনজিআইএনএক্স মনে করে যে প্রবাহটি ইতিমধ্যে অনুরোধটি প্রক্রিয়াকরণে ব্যর্থ হয়েছে, তাই এটি একটি ত্রুটির সাথে প্রতিক্রিয়া জানায়। locationকনফিগার ব্লকে কেবলমাত্র প্রক্সি_ড্রেডটাইম অন্তর্ভুক্ত করুন এবং বাড়ান increase আমার সাথে একই ঘটনা ঘটেছে এবং আমি কার্যত অভ্যন্তরীণ অ্যাপ্লিকেশনটির জন্য 1 ঘন্টা সময়সীমা ব্যবহার করেছি:

proxy_read_timeout 3600;

এটির সাথে এনজিআইএনএক্স তার প্রবাহে কিছু ফেরত পাওয়ার জন্য এক ঘন্টা (3600s) অপেক্ষা করবে wait


6
মনে রাখবেন যে, থাকার proxy_read_timeoutমধ্যে HTTP অধ্যায় সাহায্যের না পায়। আমার কাছে অবস্থান বিভাগে proxy_passদিকনির্দেশনা রয়েছে এবং কেবলমাত্র সেটিংটিতে একটি পার্থক্য রয়েছে। (nginx 1.16.0)proxy_read_timeout
জনি জেডি

আমার জন্য HTTP / সার্ভার /
লোকেশনে

39

সময়সীমা বাড়ানো থেকে আপনার সর্বদা বিরত থাকা উচিত, আমি সন্দেহ করি আপনার ব্যাকএন্ড সার্ভারের প্রতিক্রিয়া সময়টি এখানে কোনও ক্ষেত্রেই সমস্যা।

আমি সংযোগটি চালিয়ে যাওয়ার পতাকাটি সাফ করে এবং উত্তর হিসাবে এখানে HTTP সংস্করণ উল্লেখ করে এই সমস্যাটি পেয়েছি: https://stackoverflow.com/a/36589120/479632

server {
    location / {
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   Host      $http_host;

        # these two lines here
        proxy_http_version 1.1;
        proxy_set_header Connection "";

        proxy_pass http://localhost:5000;
    }
}

দুর্ভাগ্যক্রমে আমি ব্যাখ্যা করতে পারি না যে এটি কেন কাজ করে এবং উত্তরের সাথে লিখিত উত্তরে উল্লিখিত ডক্সগুলি থেকে এটি ব্যাখ্যা করতে পরিচালিত করেনি তবে কারও যদি এর ব্যাখ্যা থাকে তবে আমি এটি শুনতে আগ্রহী হব।


1
আপনি proxy_read_timeoutযদি জানেন যে প্রক্সিটির জন্য (এমনকি কোনও নির্দিষ্ট ইউআরএলের জন্যও) আরও প্রক্রিয়াকরণের সময় প্রয়োজন হয় তবে আপনি কেন সামঞ্জস্য করবেন না ?
জোশ এম

ওহে! আমি সঠিক সমস্যাটি আর মনে করতে পারি না তবে আমি মনে করি এটি ইউআরএলের আসল সময়ের সাথে সম্পর্কিত ছিল না বরং বরং এই সেটিংসটি ছাড়াই সময়সীমাটি সঠিকভাবে প্রক্রিয়াজাত করা হয়নি।
আলমুন্ড

@ ম্যাজিকব্যাকন এটি বহু বছর আগে ছিল তাই আমি মামলার বিষয়টি আর মনে রাখলাম না, আপনি কি $http_hostসঠিক পরিবর্তন করেছেন ? আমি অনুমান করছি যে এটি https এর জন্য উড়বে না। Https অনুরোধগুলির পাশাপাশি প্রক্সিংয়ের জন্য অতিরিক্ত সেটিংসের প্রয়োজন হতে পারে।
আলমন্ড

+1 টি ... একটি বিশ্রী হ্যাক মত এই মনে হচ্ছে কিন্তু আসলে এই কর্মকর্তা ডক্স :) থেকে nginx.org/en/docs/http/ngx_http_upstream_module.html#keepalive আমি কিছুটা ভিন্ন সমস্যা আছে "অকালে বদ্ধ সংযোগ মূল প্রজেক্টের যখন প্রতিক্রিয়া পড়া আপস্ট্রিম থেকে শিরোলেখ "যখন আমি কিপালাইভের সাথে প্রবাহের নির্দেশনাটি ব্যবহার করি এবং এই দুটি লাইন ব্যবহার করে এটি ঠিক করা মনে হয়।
কার্সেল 16

1
@ টিমডাভিস আমি দেখছি, সম্ভবত এটি আরও ভাল। আমার ধারণা এটি ট্র্যাফিকের উপর নির্ভর করে, যেমন পোস্টে যেমন এটি ওয়েবসকেটগুলির জন্য প্রয়োজনীয়: সার্ভারল্যাব.সিএ
টিউটোরিয়ালস

26

Nginx ত্রুটি লগ ফাইলের সাথে পরামর্শ করে কোন প্রবাহটি ধীরগতি করছে তা প্রথম নির্ধারণ করুন এবং আমার ক্ষেত্রে ততক্ষণে পড়ার সময় সামঞ্জস্য করুন এটি ছিল ফাস্ট সিজিআই

2017/09/27 13:34:03 [error] 16559#16559: *14381 upstream timed out (110: Connection timed out) while reading response header from upstream, client:xxxxxxxxxxxxxxxxxxxxxxxxx", upstream: "fastcgi://unix:/var/run/php/php5.6-fpm.sock", host: "xxxxxxxxxxxxxxx", referrer: "xxxxxxxxxxxxxxxxxxxx"

সুতরাং আমাকে আমার সার্ভার কনফিগারেশনে ফাস্টসিজি_আর_টামআউট সামঞ্জস্য করতে হবে

 location ~ \.php$ {
     fastcgi_read_timeout 240;
     ...
 }

দেখুন: মূল পোস্ট


: এখানে সময়জ্ঞান তথ্য আপনি কত "প্রয়োজন" এটি বৃদ্ধি দেখতে ব্যর্থতা যোগ করার জন্য একটি উপায় stackoverflow.com/questions/18627469/... FWIW
rogerdpack

10

আপনার ক্ষেত্রে এটি প্রক্সিতে সামান্য অপ্টিমাইজেশানকে সহায়তা করে বা আপনি "# সময় নির্ধারণের সেটিংস" ব্যবহার করতে পারেন

location / 
{        

  # time out settings
  proxy_connect_timeout 159s;
  proxy_send_timeout   600;
  proxy_read_timeout   600;
  proxy_buffer_size    64k;
  proxy_buffers     16 32k;
  proxy_busy_buffers_size 64k;
  proxy_temp_file_write_size 64k;
  proxy_pass_header Set-Cookie;
  proxy_redirect     off;
  proxy_hide_header  Vary;
  proxy_set_header   Accept-Encoding '';
  proxy_ignore_headers Cache-Control Expires;
  proxy_set_header   Referer $http_referer;
  proxy_set_header   Host   $host;
  proxy_set_header   Cookie $http_cookie;
  proxy_set_header   X-Real-IP  $remote_addr;
  proxy_set_header X-Forwarded-Host $host;
  proxy_set_header X-Forwarded-Server $host;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

আমার জন্য এটি অবস্থান বিভাগে এই সেটিংসগুলি রাখার ফলে কোনও পার্থক্য আসে । তাদের মধ্যে রয়ে HTTP অধ্যায় না সহায়তা (pssibly কারণ আমিও ছিল proxy_passমধ্যে অবস্থান অধ্যায়।
JonnyJD

আপনি এই ঘোষণার সাথে ঠিক কী অনুকূল করছেন?
ভ্লাদ

9

আমি মনে করি এই ত্রুটিটি বিভিন্ন কারণে ঘটতে পারে তবে এটি আপনি যে মডিউলটি ব্যবহার করছেন তা সুনির্দিষ্ট হতে পারে। উদাহরণস্বরূপ, আমি এটি ইউউজি মডিউলটি ব্যবহার করে দেখেছি, সুতরাং "uwsgi_read_Timeout" সেট করতে হয়েছিল।


2
আমার মনে হয় uwsgi_read_Timeout 3600; প্রক্সি_স্যান্ড_টাইমআউট 3600; প্রক্সি_প্রেম_কালীন 3600; আমার জন্য কাজ কর.
tyan

9

আমি error_logsবিশেষত প্রবাহের অংশটি দেখার জন্য সুপারিশ করব যেখানে এটি নির্দিষ্ট সময়সীমার নির্দিষ্ট প্রবাহ দেখায়।

তারপরে তার উপর ভিত্তি করে আপনি সামঞ্জস্য করতে পারেন proxy_read_timeout, fastcgi_read_timeoutবা uwsgi_read_timeout

আপনার কনফিগারেশন লোড হয়েছে কিনা তাও নিশ্চিত করুন।

আরও বিশদ এখানে Nginx upstream সময়সীমা শেষ (কেন এবং কিভাবে ঠিক করতে হবে)


4

অন্য অনেকে যেমন এখানে উল্লেখ করেছেন, এনজিআইএনএক্স-র সময়সীমা নির্ধারণ করা আপনার সমস্যা সমাধান করতে পারে।

যাইহোক, আপনার টাইমআউট সেটিংস বাড়ানো এই উত্তরগুলির অনেকের মতই সহজ সোজা নাও হতে পারে। আমি নিজেই এই সমস্যার মুখোমুখি হয়েছি এবং / থি / জিঞ্জেক্স / জিঞ্জেক্স.কনফ ফাইলটিতে আমার টাইমআউট সেটিংস পরিবর্তন করার চেষ্টা করেছি , যেমন এই থ্রেডগুলির প্রায় প্রত্যেকেরই পরামর্শ। এটি আমাকে একটুখানিও সহায়তা করেনি; এনজিআইএনএক্স'র টাইমআউট সেটিংসে কোনও আপাত পরিবর্তন হয়নি। এখন, অনেক ঘন্টা পরে, অবশেষে আমি এই সমস্যাটি সমাধান করতে সক্ষম হয়েছি।

সমাধানটি এই ফোরামের থ্রেডে রয়েছে এবং এটি যা বলে তা হ'ল আপনার সময়সীমা সেটিংসকে /etc/nginx/conf.d/timeout.conf এ রাখা উচিত (এবং যদি এই ফাইলটি বিদ্যমান না থাকে তবে আপনার এটি তৈরি করা উচিত)। আমি থ্রেডে প্রস্তাবিত একই সেটিংস ব্যবহার করেছি:

proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;

1

আমার একই সমস্যা ছিল এবং এর ফলে রেল নিয়ামকটিতে "প্রতিদিন" ত্রুটি ছিল। কেন জানি না, তবে উত্পাদনে, পুমা বার বার ত্রুটিটি চালায় বার্তাটি:

উজান থেকে প্রতিক্রিয়া শিরোনাম পড়ার সময় upstream সময়সীমা শেষ (110: সংযোগের সময়সীমা শেষ)

সম্ভবত কারণ এনগিনেক্স বারবার পুমা থেকে ডেটা পাওয়ার চেষ্টা করে The মজার বিষয়টি হ'ল আমি যে নিয়ামকটিতে একটি পৃথক ক্রিয়া বলছি ততক্ষণ সময়সীমার বার্তাটি ত্রুটি ঘটায়, সুতরাং, একটি টাইপ টাইপ সমস্ত অ্যাপ্লিকেশনটিকে অবরুদ্ধ করে।

আপনার লগ / puma.stderr.log ফাইলটি পরীক্ষা করে দেখুন এটি পরিস্থিতি কিনা।


0

আমাদের দিক থেকে এটি প্রক্সি ক্যাশে সহ স্পিডি ব্যবহার করছিল। ক্যাশে মেয়াদ শেষ হলে ক্যাশে আপডেট হওয়া অবধি আমরা এই ত্রুটিটি পাই get


0

আশা করি এটি কাউকে সহায়তা করে: আমি এই ত্রুটিটি ছুঁড়েছি এবং পিএইচপিএফপিএম-এর জন্য লগ ফোল্ডারে কারণের অনুমতি ছিল, এটি পরিবর্তন করার পরে পিএইচপিএফপিএম এটি লিখতে পারে, সবকিছু ঠিক ছিল।


0

জন্য proxy_upstreamসময় সমাপ্ত, আমি উপরোক্ত সেটিং চেষ্টা করেছিলেন কিন্তু এই কাজ করে নি।

সেটটি resolver_timeoutআমার পক্ষে কাজ করেছে, জেনেও এই প্রবাহের সময়সীমা বার্তাটি তৈরি হতে 30s সময় লেগেছে। উদাহরণস্বরূপ me.atwibble.com সমাধান করা যায়নি (110: অপারেশন সময়সীমা শেষ)

http://nginx.org/en/docs/http/ngx_http_core_module.html#resolver_timeout

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