আপনি এইচএ প্রক্সি কনফিগারেশনে টাইমআউটগুলি কী মানদণ্ডের দ্বারা সুর করেছেন?


37

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

HAProxy ক্লায়েন্ট, সংযোগ এবং সার্ভার সম্পর্কে বিশেষত উদ্বিগ্ন বলে মনে হয়, যা আপনি সম্পূর্ণরূপে আনসেট ছেড়ে দিলে HAPRoxy একটি সতর্কতা নিক্ষেপ করে:

While not properly invalid, you will certainly encounter various problems
with such a configuration. To fix this, please ensure that all following
timeouts are set to a non-zero value: 'client', 'connect', 'server'.

এই ক্ষেত্রে ডকুমেন্টেশন অকার্যকর: এটি "3 সেকেন্ডের কিছু গুণ উপরে গুণমান" প্রস্তাব দেয় তবে আপনি কেন 1 বনাম 100 বা 42 এর একাধিক পছন্দ করবেন তা নয়।

আমি যে আরপিএম ব্যবহার করছি (অ্যামাজন লিনাক্স সংগ্রহস্থল) এই ডিফল্ট সেট করে:

timeout connect         10s
timeout client          1m
timeout server          1m

এর মধ্যে দুটি হ'ল 3 সেকেন্ডের সঠিক গুণক, আমি দেখেছি এমন একমাত্র অফিসিয়াল পরামর্শ লঙ্ঘন।

আপনার যদি নির্দিষ্ট টিউনিং পরামর্শ না থাকে তবে সম্ভবত একটি সহজ প্রশ্ন হ'ল: আমার খুব স্বল্প বা সত্যই দীর্ঘ সময়সীমার সাথে ভুল হওয়ার কী আশা করা উচিত?

উত্তর:


40

টিসিপি আরটিও (সময়সীমা গ্রহণ) তিন সেকেন্ডে শুরু হয়। ( আরএফসি 1122 ) যদি কোনও সংক্রমণিত প্যাকেটের সেই সময়ে কোনও স্বীকৃতি ফেরত না আসে, তবে এটি হারিয়ে যাওয়া এবং পুনঃপ্রেরণ বলে ধরে নেওয়া হয়। এটি প্রায় অবশ্যই লেখক উল্লেখ করছেন। (দ্রষ্টব্য যে আরটিও এই প্রশ্নের ক্ষেত্রের বাইরে বিভিন্ন অ্যালগরিদম দ্বারা গতিশীলভাবে সুরক্ষিত বা নিচে নামবে ))

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

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

এই সমস্ত বিষয় মাথায় রেখে আপনি সাধারণত খুব স্বল্প সময়সীমা timeout connectএবং খুব দীর্ঘ সময়ের জন্য চাইবেন timeout client

কারণ timeout serverএটি আপনার ওয়েব অ্যাপ্লিকেশনটির উপর নির্ভর করে। সময়সীমা নির্ধারণ করার সময়, ওয়েব অ্যাপ্লিকেশনটির জটিলতা বিবেচনা করুন এবং জটিল অনুরোধটি প্রক্রিয়াকরণের জন্য সবচেয়ে খারাপ ক্ষেত্রে কতক্ষণ সময় নিতে পারে তা বিবেচনা করুন। সন্দেহ হলে মান বাড়ান।


7
মারামারিভাবে স্ট্যাকএক্সচেঞ্জের যে কোনও জায়গায় আমি পেয়েছি সবচেয়ে মারাত্মক এবং নম্র প্রতিক্রিয়া। ধন্যবাদ.
জেরেমি ওধামস 15

5
আমি কী বলতে পারি, সার্ভার ফল্ট হ'ল মারাত্মক কার্মুডিজনগুলির একগুচ্ছ।
মাইকেল হ্যাম্পটন

33

ভূমিকা

আমি কিছু সময়ের জন্য HAProxy টিউন করে চলেছি এবং এর উপর অনেকগুলি পরীক্ষার টেস্ট করেছি। 100 টি HTTP অনুরোধ / গুলি থেকে 50,000 এইচটিটিপি অনুরোধ / গুলি।

প্রথম পরামর্শটি হ্যাপ্রোক্সিতে পরিসংখ্যান পৃষ্ঠা সক্ষম করা । আপনি পর্যবেক্ষণ প্রয়োজন, ব্যতিক্রম। আপনি যদি 10,000 টি অনুরোধ / গুলি অতীত করতে চান তবে আপনার সূক্ষ্ম সুরকরণেরও প্রয়োজন হবে।

সময়সীমাগুলি একটি বিভ্রান্তিকর প্রাণী কারণ তাদের সম্ভাব্য মানগুলির বিশাল পরিসর রয়েছে, তাদের বেশিরভাগেরই কোনও পর্যবেক্ষণযোগ্য পার্থক্য নেই। 5% কম বা 5% উচ্চতর কারণে আমি এখনও কিছু ব্যর্থ দেখতে পাচ্ছি। 10000 বনাম 11000 মিলিসেকেন্ড, কে চিন্তা করে? সম্ভবত আপনার সিস্টেম না।

কনফিগারেশন

আমি সবার বিবেকের জন্য 'সর্বকালের সেরা সময়সীমা' হিসাবে কয়েকটি নম্বর দিতে পারি না।

পরিবর্তে আমি যা বলতে পারি তা হ'ল বেশিরভাগ আক্রমণাত্মক সময়সীমা যা HTTP (এস) লোড ভারসাম্যের জন্য সর্বদা গ্রহণযোগ্য। আপনি যদি এর চেয়ে কম মুখোমুখি হন তবে আপনার লোড ব্যালেন্সারটিকে পুনরায় কনফিগার করার সময়।

timeout connect 5000
timeout check 5000
timeout client 30000
timeout server 30000

সময়সীমা ক্লায়েন্ট:

নিষ্ক্রিয়তার সময়সীমা প্রযোজ্য যখন ক্লায়েন্টটি ডেটা স্বীকৃতি বা প্রেরণ প্রত্যাশিত হয়। এইচটিটিপি মোডে, এই সময়সীমাটি প্রথম পর্যায়ে, যখন ক্লায়েন্ট অনুরোধটি প্রেরণ করে এবং প্রতিক্রিয়ার সময় এটি সার্ভারের মাধ্যমে প্রেরিত ডেটা পড়ার সময় বিবেচনা করা বিশেষভাবে গুরুত্বপূর্ণ।

পড়ুন : ক্লায়েন্টের কাছ থেকে এইচটিটিপি অনুরোধ শিরোনাম পাওয়ার সর্বোচ্চ সময় ।

3 জি / 4 জি / 56 কে / স্যাটেলাইট সময়ে ধীর হতে পারে। তবুও, তাদের 30 টি নয়, কয়েক সেকেন্ডের মধ্যে HTTP শিরোনাম প্রেরণে সক্ষম করা উচিত।

কারও সাথে যদি এমন সংযোগ থাকে যে কোনও পৃষ্ঠার অনুরোধ করার জন্য 30 এর বেশি প্রয়োজন (তবে 10 এম্বেড করা চিত্র / সিএসএস / জেএসের অনুরোধের জন্য 10 * 30 এর বেশি), আমি বিশ্বাস করি যে এটি তাকে প্রত্যাখ্যানযোগ্য it

সময়সীমা সার্ভার:

নিষ্ক্রিয়তার সময়সীমাটি প্রযোজ্য হয় যখন সার্ভারটি ডেটা স্বীকৃতি বা প্রেরণের প্রত্যাশা করে। এইচটিটিপি মোডে, এই সময়সীমাটি সার্ভারের প্রতিক্রিয়াটির প্রথম পর্যায়ে বিবেচনা করা বিশেষভাবে গুরুত্বপূর্ণ, যখন এটি শিরোনাম পাঠাতে হয়, কারণ এটি অনুরোধের জন্য সরাসরি সার্ভারের প্রক্রিয়াজাতকরণের সময় উপস্থাপন করে। সেখানে কী কী মূল্য দিতে হবে তা সন্ধান করার জন্য, অগ্রহণযোগ্য প্রতিক্রিয়ার সময় হিসাবে বিবেচিত হবে তা দিয়ে প্রায়শই শুরু করা ভাল, তারপরে প্রতিক্রিয়ার সময় বিতরণ পর্যবেক্ষণ করতে লগগুলি চেক করুন এবং সেই অনুযায়ী মানটি সামঞ্জস্য করুন।

পড়ুন : সার্ভারের থেকে HTTP প্রতিক্রিয়া শিরোনামগুলি পাওয়ার জন্য এটি সর্বোচ্চ সময় (এটির সম্পূর্ণ ক্লায়েন্টের অনুরোধ পাওয়ার পরে)। মূলত, এটি আপনার সার্ভারগুলির প্রক্রিয়াজাতকরণের সময়, প্রতিক্রিয়া প্রেরণ শুরু করার আগে।

যদি আপনার সার্ভারটি এত ধীর গতিতে থাকে যে এর উত্তর দেওয়া শুরু করতে 30s এরও বেশি প্রয়োজন, তবে আমি বিশ্বাস করি এটি মৃত হিসাবে বিবেচনাযোগ্য is

বিশেষ কেস : খুব ভারী প্রক্রিয়াকরণ করছে এমন কিছু বিরল পরিষেবাগুলির একটি উত্তর দিতে পুরো মিনিট বা তার বেশি সময় লাগতে পারে। এই নির্দিষ্ট ব্যবহারের জন্য এই টাইমআউটটি অনেক বাড়ানোর প্রয়োজন হতে পারে। (দ্রষ্টব্য: এটি খারাপ ডিজাইনের ক্ষেত্রে হতে পারে, একটি অ্যাসিঙ্ক স্টাইল যোগাযোগ ব্যবহার করুন বা HTTP ব্যবহার করবেন না all)

সময়সীমা সংযোগ:

কোনও সার্ভারে সংযোগের চেষ্টাটির জন্য সাফল্যের জন্য অপেক্ষা করতে সর্বোচ্চ সময় নির্ধারণ করুন।

পড়ুন : কোনও সার্ভারের সর্বাধিক সময় টিসিপি সংযোগ গ্রহণ করতে হয়।

সার্ভারগুলি HAProxy এর মতো একই ল্যানে রয়েছে তাই এটি দ্রুত হওয়া উচিত। এটি কমপক্ষে 5 সেকেন্ড দিন কারণ কোনও অপ্রত্যাশিত ঘটনা ঘটলে এটি কতক্ষণ সময় নিতে পারে (ট্রান্সপোর্টে স্পাইক করে নতুন অনুরোধ গ্রহণের জন্য একটি সার্ভার একটি নতুন প্রক্রিয়া জোর করে বলছে, ট্রান্সপোর্টে নতুন প্রক্রিয়াকরণ করার জন্য একটি সার্ভার) rans

বিশেষ কেস : সার্ভারগুলি যখন অন্য কোনও ল্যানে থাকে বা কোনও অবিশ্বস্ত লিঙ্কের ওপরে থাকে। এই সময়সীমাটি অনেক বাড়ানোর প্রয়োজন হতে পারে। (দ্রষ্টব্য: এটি সম্ভবত খারাপ স্থাপত্যের ক্ষেত্রে হতে পারে।)

সময়সীমা পরীক্ষা:

অতিরিক্ত চেক টাইমআউট সেট করুন, তবে কেবল কোনও সংযোগ ইতোমধ্যে প্রতিষ্ঠিত হওয়ার পরে।

অতিরিক্ত চেক টাইমআউট সেট করুন, তবে কেবল কোনও সংযোগ ইতিমধ্যে স্থাপন করা থাকলে সেট করা থাকলে, হ্যাপ্রোক্সি চেকের জন্য সংযোগের সময়সীমার হিসাবে কম ("টাইমআউট সংযোগ", "আন্ত") এবং অতিরিক্ত পড়ার সময়সীমা হিসাবে "টাইমআউট চেক" ব্যবহার করে। "মিনিট" ব্যবহার করা হয় যাতে খুব দীর্ঘ "টাইমআউট সংযোগ" দিয়ে দৌড়ানো লোকেরা (যেমন: সারি বা টারপাইটের কারণে যাদের এটি দরকার ছিল) তাদের চেকগুলি ধীর না করে। (দয়া করে নোট করুন যে এত দীর্ঘ সংযোগের সময়সীমা থাকার কোনও বৈধ কারণ নেই, কারণ এটি এড়ানোর জন্য "টাইমআউট সারি" এবং "টাইমআউট ট্যারিপিট" সর্বদা ব্যবহার করা যেতে পারে)।

পড়ুন : স্বাস্থ্য পরীক্ষা করার সময় সার্ভারকে প্রতিক্রিয়া timeout connectজানাতে সংযোগটি গ্রহণ করতে হবে accepttimeout check

সমস্ত সার্ভারের একটি HTTP (এস) স্বাস্থ্য পরীক্ষা কনফিগার করা আবশ্যক। সার্ভার উপলব্ধ কিনা তা বোঝার ভারসাম্যের একমাত্র উপায়। স্বাস্থ্য চেক /isaliveসর্বদা উত্তর দেওয়ার একটি সহজ পৃষ্ঠা OK

এই টাইমআউটটি কমপক্ষে 5 সেকেন্ড দিন কারণ অপ্রত্যাশিত কিছু ঘটলে এটি কতক্ষণ সময় নিতে পারে (ট্রান্সফিকের প্রবণতা বৃদ্ধি করে নতুন অনুরোধগুলি গ্রহণের জন্য একটি সার্ভার একটি নতুন প্রক্রিয়া জোরদার করার জন্য একটি সার্ভার, নতুন ট্রান্সপোর্টের জন্য চাপ দিচ্ছে) how

যুদ্ধের গল্প : প্রচুর লোক ভুলভাবে বিশ্বাস করে যে সার্ভার সর্বদা এই সাধারণ পৃষ্ঠাটির উত্তর 3 এমএসে দিতে পারে। তারা আক্রমণাত্মক ফেলওভার (2 ব্যর্থ চেক = সার্ভার ডেড) সহ একটি আক্রমণাত্মক সময়সীমা (<2000 মিমি) সেট করে। আমি পুরো ওয়েবসাইটগুলি নীচে নেমে যেতে দেখেছি। সাধারণত ট্র্যাফিকের ক্ষেত্রে সামান্য গতি থাকে, ব্যাকএন্ড সার্ভারগুলি ধীর হয়ে যায়, স্বাস্থ্য পরীক্ষাগুলি বিলম্বিত হয় ... হঠাৎ হঠাৎ এগুলি একসাথে শেষ হয়ে যায়, HAProxy মনে করে সমস্ত সার্ভার একবারে মারা গিয়েছিল এবং পুরো সাইটটি ডাউন হয়ে যায়।

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