আপনি কেন কখনও সীমাহীন ব্যতীত ম্যাক্সকিপএলাইভকেইটস সেট করবেন?


11

KeepAliveTimeoutনির্দিষ্ট সময়ের মধ্যে একটি নতুন অনুরোধ জারি করা না হলে অ্যাপাচি-র রক্ষা-সংযোগ বন্ধ করার জন্য উপস্থিত রয়েছে close প্রদত্ত ব্যবহারকারী তার ব্রাউজার / ট্যাবটি বন্ধ না করে, এই সময়সীমাটি (সাধারণত 5-15 সেকেন্ড) অবশেষে বেশিরভাগ রক্ষণশীল সংযোগগুলি বন্ধ করে দেয় এবং অনির্দিষ্টকালের জন্য সংযোগ ধরে রেখে সার্ভারের সংস্থানগুলি নষ্ট হতে বাধা দেয়।

এখন MaxKeepAliveRequestsনির্দেশটি এইচটিটিপি অনুরোধের একটি সীমাবদ্ধতা রাখে যে কোনও একক টিসিপি সংযোগ (কারণে খোলা বামে KeepAlive) পরিবেশন করবে। এটি সেট করার 0অর্থ সীমাহীন সংখ্যক অনুরোধ অনুমোদিত।

আপনি কেন এটিকে "সীমাহীন" ব্যতীত অন্য কিছুতে সেট করবেন? প্রদত্ত কোনও ক্লায়েন্ট এখনও সক্রিয়ভাবে অনুরোধ করে চলেছে, একই রাখার সংযোগে তাদের কী হতে দেয় তাতে ক্ষতি কি? সীমাটি পৌঁছে গেলে, অনুরোধগুলি এখনও নতুন সংযোগে আসবে।

আমি এটি যেভাবে দেখছি, এটি সীমাবদ্ধ করার কোনও মানে নেই। আমি কী মিস করছি?

উত্তর:


4

মূলত, কারণ অ্যাপাচি এর জন্য নির্মিত হয়নি। সমস্যাটি সার্ভারের মেমরির ব্যবহার। অনেকগুলি কনফিগারেশনে কনটেন্ট বিতরণ সামগ্রীতে বিতরণ করার মতোই প্রক্রিয়া সম্পন্ন হয়, সুতরাং প্রতিটি প্রক্রিয়া এটি পরিচালনা করে এমন সবচেয়ে বড় আকারের আকারে বাড়বে। ভারী পিএইচপি স্ক্রিপ্টের কারণে কোনও প্রক্রিয়া mb৪ এমবিতে প্রসারিত হওয়ার চিত্র দিন, তারপরে সেই স্ফীত প্রক্রিয়াটি স্থির ফাইলগুলিতে বসে এবং পরিবেশন করা হচ্ছে। এখন এটি 100 দ্বারা গুণ করুন। এছাড়াও, যদি কোথাও মেমরি ফাঁস হয়, প্রক্রিয়া সীমা ছাড়াই বৃদ্ধি পাবে।

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


2

আমি জানি এটি একটি পুরানো প্রশ্ন, তবে আমি কিছু ডিবাগিং করছি, এবং মনে হয় (এবং এটি কেবল অ্যাপাচি-র ক্ষেত্রেই সত্য নয়) MaxKeepAliveRequestsস্বাধীনভাবে কাজ করে KeepAliveTimeout

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

দীর্ঘদিন ধরে চলমান টিসিপি সংযোগগুলি এলোমেলোভাবে হত্যা করা সহ কিছু কারণে এটি ভাল নাও হতে পারে? যাই হোক না কেন, এইচটিপি ক্লায়েন্টরা সেই নির্বোধ নয় এবং "লো" MaxKeepAliveRequestsসেটিংসটি বেশ ভালভাবে পরিচালনা করতে পারে , উদাহরণস্বরূপ, প্রোগ্রামিং ভাষার ক্ষেত্রে এটি সন্ধান করা অপেক্ষাকৃত সহজ যে কোনও টিসিপি সংযোগটি সার্ভার দ্বারা বন্ধ করা হয়েছে এবং এইভাবে আবার এটিতে আবার সংযোগ স্থাপন করতে পারে। অধিকন্তু, বেশিরভাগ এইচটি-পি-ক্লায়েন্টের নিজস্ব স্থানে সীমাবদ্ধতা থাকবে (যেমন ব্রাউজারগুলি ৩০০ সেকেন্ড বা তারপরেও একটি রক্ষণাবেক্ষণ সংযোগ বন্ধ করে দেবে)।


1

একটি কারণ লোড ব্যালেন্সিংয়ের জন্য। একবার বেঁচে থাকার বা HTTP 1.1 ধ্রুব সংযোগ তৈরি হয়ে গেলে লোড ব্যালেন্সার এটি বন্ধ না হওয়া পর্যন্ত এটি কোনও নতুন হোস্টে স্থানান্তরিত করবে না। আপনার যদি একটি ক্লায়েন্ট তাদের সংযোগের জন্য বিশাল সংখ্যক অনুরোধ করে তবে আপনি সার্ভারগুলির মধ্যে ভাল ভারসাম্য বোধ করতে পারেন না।


তবে কেন ব্যাপার হবে? আমার কাছে, একক ব্যবহারকারীর সংযোগটি একাধিক সার্ভারের মাধ্যমে ছড়িয়ে দেওয়া কখনই অনাকাঙ্ক্ষিত বলে মনে হয়। লোড ব্যালেন্সিং হ'ল একক ব্যবহারকারীর সংযোগ নয়, উচ্চ সংখ্যক ব্যবহারকারীকে পরিচালনা করা। প্রকৃতপক্ষে - যদি কোনও একক ব্যবহারকারী কোনও পরিষেবাতে হাতুড়ি দিচ্ছেন, আপনি বরং এটি একটি একক সার্ভারের মধ্যে সীমাবদ্ধ থাকবেন (যেখানে তারা কার্যকরভাবে তাদের রেট-সীমাবদ্ধ করবে)।
জোনাথন রাইনহার্ট

1
ভাল দিক. কয়েকটি চিন্তাভাবনা: ১. সেই সার্ভারে অন্য যে কোনও একটিরও হাতুড়ি হবে। ২. লোড ব্যালেন্সারদের জন্য যা এইচটিটিপি স্তরের নীচে কাজ করে: আপনি যখন লোড ব্যালেন্সার পুলের বাইরে কোনও সার্ভার নেন তখন এটি বিদ্যমান এইচটিটিপি সংযোগটি বন্ধ করে না। এটি লোড ব্যালান্সারের সাহায্যে লোকেদের একটি ভিন্ন সার্ভারে স্থানান্তর করা কিছুটা শক্ত করে তোলে। কারণ 2 এই প্যারামিটার সম্পর্কে লোকেরা কী বলেছিল তা অনুসন্ধান করার সময় আমি কীভাবে এই পৃষ্ঠায় পৌঁছেছি।
dtauzell

1
তৃতীয় কারণ: যদি আপনার সার্ভার / অ্যাপ্লিকেশনটি খারাপ অবস্থায় চলে যায় এবং এই পিনিংটি ত্রুটিযুক্ত হয়ে থাকে তবে পরিস্থিতি সংশোধন না হওয়া পর্যন্ত সমস্ত অনুরোধকে ত্রুটিযুক্ত করে তুলতে পারে, তবে আপনি যদি সীমাবদ্ধ করেন তবে নতুন সার্ভারের সাথে ভারসাম্য বজায় রাখার সম্ভাবনা কতটা তাদের রয়েছে limit ।
dtauzell

আমি এমন লোড ব্যালেন্সারটি পেলাম না যে এইভাবে কাজ করে। একটি লোড ব্যালেন্সারের সাধারণত একটি "স্টিকিনেস" প্যারামিটার থাকে যা বর্তমান সেশনের মধ্যে ক্লায়েন্টের সমস্ত অনুরোধ (উদাহরণস্বরূপ আইপি দ্বারা নির্ধারিত) একই প্রবাহে প্রবাহিত করা উচিত, বা প্রবাহের মধ্যে ছড়িয়ে দেওয়া উচিত কিনা তা নির্ধারণ করে Which কোন বিকল্পটি কার্যকর তা অ্যাপ্লিকেশনটির উপর নির্ভর করে যে উজানের উপর দিয়ে চলছে
ম্যানুয়েল

1

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

বেশিরভাগ ক্ষেত্রে ভারসাম্য লোড করুন তবে বিশেষত রক্ষণাবেক্ষণের ক্ষেত্রে। আপনি যদি কোনও সার্ভার অফলাইনে নিতে চান তবে আপনি এটি 0 টি সংযোগে ফেলে দিন তবে বিদ্যমান সংযোগগুলি কিছু সময়ের জন্য শেষ করতে অনুমতি দিন। রক্ষণশীল অনুরোধগুলির সংখ্যার উপর সীমাবদ্ধতা রাখার অর্থ হ'ল শেষ পর্যন্ত ব্যবহারকারীরা কৃপণভাবে একটি নতুন সংযোগ তৈরি করবেন এবং একটি নতুন ব্যাক-এন্ড সার্ভারে স্থানান্তরিত হবেন। সম্ভবত ড্রেন প্রক্রিয়া চলাকালীন সার্ভারে সিগন্যাল দেওয়ার কোনও উপায় যে এটি রক্ষণাবেক্ষণ সম্পূর্ণরূপে গ্রহণ করা বন্ধ করে দেওয়া উচিত আরও ভাল হবে তবে আমি এখনও জানি যে এই জাতীয় বৈশিষ্ট্যটির অস্তিত্ব নেই।

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