এনগিনেক্স - যদি `নোডলে` বিকল্প থাকে তবে` burst` সংজ্ঞায়িত করার অর্থ কী


14

এনগিনেক্স কনফিগারেশনে, আপনি যখন limit_req_zone/ ব্যবহার করে অনুরোধ প্রক্রিয়াকরণের হার সীমাবদ্ধ করতে চান limit_req instructions, আমি সত্যিই nodelayবিকল্পটির ব্যবহার বুঝতে পারি না ।
আমার বোধগম্যে, এটি অনুরোধগুলি বিলম্ব না করে সংজ্ঞায়িত হারের উপরে সরিয়ে দেয়। সুতরাং এটি সমতুল্য বলে মনে হচ্ছে burst=0। এজন্য আমি নিম্নলিখিত উদাহরণটি বুঝতে পারি না:

limit_req zone=one burst=5 nodelay;

burstঅনুরোধের সংখ্যাটি সংশোধন করে যা বিলম্ব হতে পারে, সুতরাং বিকল্পটি burstথাকলে সংজ্ঞা দেওয়ার অর্থ কী nodelay?

উত্তর:


28

আমি limit_reqডকুমেন্টেশন যথেষ্ট পরিষ্কার।

burst সেভাবে নথিভুক্ত করা হয়:

অতিরিক্ত অনুরোধগুলি যতক্ষণ না তাদের সংখ্যা সর্বাধিক বিস্ফোরণের আকার ছাড়িয়ে যায় [...]

nodelay সেভাবে নথিভুক্ত করা হয়:

যদি অনুরোধগুলি সীমাবদ্ধ থাকা অবস্থায় অতিরিক্ত অনুরোধে বিলম্ব হওয়া পছন্দ না হয় তবে প্যারামিটার নোডলে ব্যবহার করা উচিত

অনুরোধগুলি নির্ধারিত হারের সাথে সীমাবদ্ধ। অনুরোধগুলি যদি উচ্চতর হারে আগত হয় তবে প্রতি ইউনিট হিসাবে নির্ধারিত সংখ্যার চেয়ে বেশি অনুরোধ দেওয়া হবে না। এরপরে আপনাকে সেই অন্যান্য অনুরোধগুলির সাথে কী করবেন তা সিদ্ধান্ত নিতে হবে।

  • ডিফল্টরূপে (না burst, না nodelay), অনুরোধগুলি HTTP 503 ত্রুটির সাথে অস্বীকৃত হয়।
  • এর সাথে burst, আপনি একটি অপেক্ষার সারিতে সংজ্ঞায়িত সংখ্যার অনুরোধগুলি সজ্জিত করেন, তবে আপনি সময় ইউনিট হারের জন্য নির্ধারিত অনুরোধগুলির চেয়ে তত দ্রুত তাদের প্রক্রিয়া করেন না
  • সঙ্গে burstএবং nodelay, কিউ অপেক্ষা করা হবে না এবং অনুরোধ বিস্ফোরণ অবিলম্বে প্রক্রিয়াকৃত হবে

3
আপনার স্পষ্টতার জন্য ধন্যবাদ, ডকুমেন্টেশন আমার পক্ষে যথেষ্ট পরিষ্কার নয়।
নিকোলাস

1
আমি আমার উত্তরটি সম্পাদনা করে ডকুমেন্টেশনটি উদ্ধৃতি দিয়ে প্রতিফলিত করেছি। প্রতিটি শব্দ এটিকে সংক্ষিপ্ত করে তুলতে এনজিনেক্স ডকুমেন্টেশনে সাবধানতার সাথে ওজনযুক্ত: এটি এ সম্পর্কে দুর্দান্ত।
বার্নার্ড রোসেট

3
সুতরাং পার্থক্য কি limit_req_zone $binary_remote_addr zone=flood:10m rate=6r/s; limit_req zone=flood burst=0;যা প্রতি সেকেন্ডে 6 টি অনুরোধ এবং limit_req_zone $binary_remote_addr zone=flood:10m rate=1r/s; limit_req zone=flood burst=5 nodelay;যা প্রতি সেকেন্ডে 6 টি অনুরোধের অনুমতি দেয়?
নিকোলাস

2
বার্নার্ডের আনসার সম্পর্কে কেবল নিশ্চিত করতে চাই। যদি বার্নার্ড যা বলেছিল তা সঠিক ছিল, ফেটে এবং নোডলে দিয়ে, ওয়েব সার্ভারের হিট r / s হার সময়ে সময়ে সংজ্ঞায়িত অনুরোধগুলির চেয়ে বেশি হবে, তাই না?
জিসার্স

2
@ বার্নার্ডরোসট আপনি কি দয়া করে পরিষ্কার করতে পারেন যে "সারিতে অপেক্ষা করা হবে না" - এর অর্থ কী?
ডেনিস গর্বাচেভ

8

মূল উত্তরের মন্তব্যগুলি ভুল বলে মনে হচ্ছে।

প্রশ্নটি হ'ল প্রশ্নটি হ'ল = 6r / s বিস্ফোরণ = 0 এবং হার = 1r / s বিস্ফোরণ = 5 নোডলে মধ্যে পার্থক্য কি

উত্তরগুলি নোডলে বিকল্প উপস্থিত না থাকাকালীন পার্থক্যটি ব্যাখ্যা করার ক্ষেত্রে দুর্দান্ত - যে ক্ষেত্রে, অনুরোধগুলি ফাটার সাথে সারি করে, এবং ফাটিয়ে 503'd হয়।

আসল উত্তরটি স্পট বলে মনে হচ্ছে - নোডলে দিয়ে, বিস্ফোরিত অনুরোধগুলি তত্ক্ষণাত্ প্রক্রিয়া করা হবে। এবং তারপরে, এর একমাত্র নিহিততা হ'ল একটি ফাটানো + নোডলে বনাম উল্লেখ করার মধ্যে কোনও পার্থক্য নেই just কেবলমাত্র প্রথমে busrt = 0 সহ একটি উচ্চতর সীমা নির্দিষ্ট করে।

অতএব, আরও সংক্ষিপ্তভাবে ওপি প্রশ্নের উত্তর দিতে: নোডলে নির্দিষ্ট করা হলে ফেটে যাওয়া অর্থ কেবল ফেটে না গিয়ে আরও বড় হার নির্দিষ্টকরণের সমান।


এই বিষয়টি পরিষ্কার করার জন্য ধন্যবাদ, যা কার্যকরভাবে আমার প্রশ্নের কারণ ছিল।
নিকোলাস

এটা ভুল. আমার উত্তর + মন্তব্য আবার পড়ুন। আপনি যদি এখনও এটি না দেখেন তবে আসুন আমার উত্তর সম্পর্কে একটি মন্তব্যে নিকোলাস সরবরাহ করেছেন উভয় কনফিগারেশনগুলিতে স্কেচ: 6 আর / গুলি করুন। 1 ম দ্বিতীয় -> উভয় দৃশ্য 6 টি পরিবেশন করবে, তবে কনফারেন্স 2 2 বিস্ফোরণে 5 টি সংরক্ষণ করবে। ২ য় দ্বিতীয় এবং তারপরেও, কনফিড # 1 এর জন্য এখনও একই (সমস্ত 6 টি পরিবেশন করা হয়েছে), তবে কনফারেন্স # 2 রেটের সীমা অনুসারে ব্যবহারের পরিমাণ অনুসারে বিস্ফোরণ বালতি থেকে 1 সরিয়ে ফেলবে, 1 সারি সারিতে রেখে যাবে। অন্য 5r ফেলে দেওয়া হয়।
বার্নার্ড রোসেট

@ বার্নার্ডরোসেট: তবে এর nodelayঅর্থ এই নয় যে এই অনুরোধগুলি সারিবদ্ধ হওয়ার পরিবর্তে তত্ক্ষণাত প্রক্রিয়া করা হবে?
স্যারাইড

4

সঙ্গে burstএবং nodelayআমি সহজে ভালো প্রক্রিয়া (অন্যান্য উপায় কাছাকাছি তুলনায় এটি সাধারণত বোঝা যায়) বুঝতে নির্দিষ্ঠ:

  1. আপনি সর্বাধিক burstঅনুরোধের অনুমতি দিন । সেই সাথে $binary_remote_addrআপনি প্রদত্ত ঠিকানা থেকে সর্বাধিক সংখ্যক অনুরোধগুলি গ্রহণ করুন। প্রতিটি অনুরোধ একটি অভ্যন্তরীণ কাউন্টার বাড়িয়ে তোলে। যখন কাউন্টার পৌঁছে যায় তখন burstসমস্ত অতিরিক্ত অনুরোধ অস্বীকৃত হয় (এবং কাউন্টারটির burstমান ছাড়িয়ে বাড়ানো হয় না )।
  2. এই কাউন্টারটি ক্রমাগত ব্যবহার করে নির্দিষ্ট হারে হ্রাস পেয়েছে rate

এই যুক্তিটি সুপারিশ করে যে এটি একটি উচ্চ burstমানের (উদাহরণস্বরূপ 100 এবং আরও বেশি) এবং কম rateমান (এমনকি 2r / s এর মতো কিছু ) নির্দিষ্ট করতে সঠিক ধারণা তৈরি করে । টেকসই বট অনুরোধের স্ট্রিমের বিরুদ্ধে সুরক্ষার সময় এটি স্বাভাবিক ব্রাউজিং (সমান্তরাল অনুরোধগুলির একটি ব্যাচ) এর পরে একটি শান্ত সময়ের পরে পরিচালনা করে।


1

আমি নিকোলাসের প্রশ্নটি সেই লোকটির কাছে জিজ্ঞাসা করেছি, যিনি নীজিনক্স ওয়েবসাইটে নীচের পোস্টটি লিখেছেন। এনজিআইএনএক্স রেট সীমিত করছে is তার উত্তর নীচের মত

পূর্বের হারের সীমাতে, এনজিনেক্স 1 / seconds ষ্ঠ সেকেন্ডের বিরতিতে পরপর অনুরোধগুলি গ্রহণ করবে। এটি অনুরোধগুলির একটি বিস্ফোরণকে গ্রহণ করবে না যা সেই ন্যূনতম সময়ের ব্যবধানটি পূরণ করে না। পরের সংজ্ঞায় অন্যদিকে, এনজিনেক্স অনুরোধগুলির মধ্যে সময়ের ব্যবধান নির্বিশেষে 6 টির জন্য অনুরোধের একটি বিস্ফোরণ গ্রহণ করবে। উত্তর লিঙ্ক


হ্যালো @ গার্ডেনার এবং সার্ভার ফল্টে স্বাগতম। আপনার ভাল কারুকৃত অবদানের জন্য ধন্যবাদ। উত্স লিঙ্কটি খুব প্রশংসা করা হয়।
মার্কো

0

দুর্দান্ত ড্যানের উত্তরের ভিত্তিতে এবং এনজিএনএক্সের উত্স কোডের ভিত্তিতে , nodelayআচরণের জন্য একটি সংক্ষিপ্তসারগুলি নীচে বলে মনে হয়:

  • burstকত নতুন নতুন একযোগে অনুরোধ অনুমোদিত।
  • rateকত নতুন একযোগে অনুরোধ সময় প্রতি ইউনিট পুরানো হয় । (এই আপডেটটি ধীরে ধীরে ঘটে: অনুরোধের জন্য একবার তবে প্রতি সেকেন্ডে নয়))

-2

আমি এই থ্রেডটি পড়ার পরামর্শ দিচ্ছি: অবস্থান / প্রক্সি অনুসারে সীমা_আরক_জোন সীমা

এবং এই উত্তর: স্ট্যাকওভারফ্লো


1
কেবল লিঙ্ক-উত্তর উত্তরগুলি সার্ভার ফল্টে সাব-সমান হিসাবে বিবেচিত হয়। দয়া করে এখানে দরকারী সামগ্রী সরবরাহ করুন এবং তারপরে প্রয়োজনে আরও বিশদের জন্য অন্যত্র লিঙ্ক করুন।
EEAA
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.