এনগিনেক্সের টাইমআউট কীভাবে অক্ষম করবেন?


47

একটি স্থানীয় বিকাশ মেশিনে, আমার কাছে এরকম একটি এনজিনেক্স বিপরীত প্রক্সি রয়েছে :

server {
  listen 80;
  server_name myvirtualhost1.local;
  location / {
    proxy_pass http://127.0.0.1:8080;
}

server {
  listen 80;
  server_name myvirtualhost2.local;
  location / {
    proxy_pass http://127.0.0.1:9090;
}

তবুও যদি আমি আমার অ্যাপ্লিকেশনটি ডিবাগ করি তবে প্রতিক্রিয়াটি অসীম সময়ের জন্য বিলম্ব হতে পারে, তবুও আমি 30 সেকেন্ড পরে পেয়েছি:

504 Gateway Time-out

একটি প্রতিক্রিয়া হিসাবে.

আমি কীভাবে সময়সীমা অক্ষম করতে পারি এবং প্রতিক্রিয়াটির জন্য আমার বিপরীত প্রক্সি চিরকাল অপেক্ষা করতে পারি? এবং আমি সেটিংসটি বিশ্বব্যাপী হওয়া পছন্দ করি, যাতে প্রতিটি প্রক্সি জন্য আমাকে এটি সেট না করতে হয়।


1
একটি পটভূমি কাজ শুরু করার এবং ব্যবহারকারীকে পরে তার স্থিতি পরীক্ষা করতে দেওয়া বিবেচনা করুন।
মাইকেল হ্যাম্পটন

উত্তর:


61

এটি একেবারেই অক্ষম করা সম্ভব নাও হতে পারে, তবুও কার্যকর সম্ভাব্য কাজটি কার্যকর করার সময় বাড়ানো। একটি nginx টিউটোরিয়াল সাইটে , এটি লেখা ছিল:

আপনি যদি আপনার সার্ভারের সমস্ত সাইটের জন্য সময়সীমা বাড়াতে চান তবে আপনি মূল nginx.confফাইলটি সম্পাদনা করতে পারেন :

vim /etc/nginx/nginx.conf

HTTP {..} বিভাগে নিম্নলিখিত যুক্ত করুন

http {
     fastcgi_read_timeout 300;
     proxy_read_timeout 300;
}

এবং nginx 'কনফিগারটি পুনরায় লোড করুন:

sudo service nginx reload

আমি বরং একটি বৃহত্তর মান ব্যবহার করেছি যা হওয়ার সম্ভাবনা নেই, অর্থাত্‍ 999999বা সময় ইউনিট ব্যবহার করে একদিন হয়ে 1d

সাবধান হোন যে মান সেট করা 0তাৎক্ষণিকভাবে একটি গেটওয়ে টাইমআউট ত্রুটির কারণ হতে পারে।


3
প্রিয় এলোমেলো ডাউনভোটার, এই অনুশীলনটি সম্পর্কে যা খারাপ তা সম্পর্কে একটি মন্তব্য চমৎকার হবে।
k0pernikus

7
@kb। এটি মজার বিষয় যে আমি ওপি এবং স্রেফ একটি সলিউশন সমাধানের অপেক্ষায় উত্তর হিসাবে সর্বাধিক
কার্যক্ষম কর্মসংস্থান পোস্ট করেছি posted

2
হাহা, আমি পুরোপুরি মিস করেছি যে আপনি ওপি ছিলেন। তবে আপনার উত্তরটি সঠিক, আপনি এটি আরও স্পষ্ট করে বলতে পারেন (আমার মতো ভবিষ্যতের গুগলদের জন্য) যে এটি অক্ষম করার কোনও উপায় নেই। =)
কেবি।

5
0কাজ না করা সম্পর্কিত তথ্যের জন্য ধন্যবাদ ! নোট করুন যে আপনি পাঠযোগ্য প্রত্যয় সহ সময় ইউনিট নির্দিষ্ট করতে পারেন , যাতে আপনি এর মতো মান ব্যবহার করতে পারেন 1d
আসল নাম

3
আমি এটি এবং proxy_connect_timeout 600;nginx.conf ফাইল উভয়ই যুক্ত করেছি , তবে সময়সীমাটি এখনও 60 সেকেন্ডে রয়েছে। আমার আর কিছু চেষ্টা করা উচিত?
andreszs

9

আপনি যদি এডাব্লুএস এবং লোড ব্যালেন্সার ব্যবহার করেন তবে আপনার নিষ্ক্রিয় সময়সীমা সম্পাদনা করা উচিত। আমার মনে হয় ডিফল্টটি 60 সেকেন্ডের


আমি বুঝতে পেরেছি কেন এটিকে ভোট দেওয়া হয়েছে তবে সম্ভবত যদি উত্তরটির ব্যবহারের ক্ষেত্রে ব্যাখ্যাটি আপডেট করা হয় তবে এটি আরও কার্যকর হবে। যদিও এটি ওপিটির উত্তর দিতে যায় না, আপনি ELB ব্যবহার করছেন কিনা তা বিবেচনা করার জন্য দরকারী কিছু কারণ তারা সংযোগটি কতক্ষণ খোলা রাখবে তার সীমা রয়েছে।
ডায়েজ 87

@ ডায়েজ ৮87 হ্যাঁ, এটি বিবেচনার জন্য কেবল কিছু
সেজেলজিক

এটি বিশেষত আমার ক্ষেত্রে যাচাই করা উচিত যে এডাব্লুএস এর অধীনে ম্যাজেন্টোর সাথে কাজ করা। ভাল পয়েন্ট @ সেলজিক
vnpnlz

ধন্যবাদ ভাই, যেহেতু আমি আমার ইসি 2 উদাহরণগুলিতে বিতরণের জন্য এডাব্লুএস লোড ব্যালান্সার ব্যবহার করি
Vũ Thành Tâm

এটি সমস্ত উত্সাহের দাবিদার - যে কোনও এডাব্লুএস ব্যবহারকারী তাদের এনজিআইএনএক্স সেটিংস ছাড়াই 60 সেকেন্ডের মধ্যে সীমাবদ্ধ থাকবে
এফায়ার

4

আমি nginx 502 সময়সীমা ত্রুটির সাথে লড়াই করছি এবং সমস্যাটি সমাধান করতে পারিনি। যাইহোক, এটি টাইম আউট ত্রুটির কারণ হিসাবে বন্দুকযুক্ত হতে পারে। সুতরাং আপনার আপনার ফাস্টসিগি সেটিংসও পরীক্ষা করতে হবে।

বন্দুকের জন্য এটি:

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