একটি আধুনিক লিনাক্স বাক্সে থাকা তাত্ত্বিক সর্বাধিক সংখ্যক উন্মুক্ত টিসিপি সংযোগগুলি কী


236

হার্ডওয়্যার থেকে অসীম পারফরম্যান্স ধরে নেওয়া, একটি লিনাক্স বাক্স> 65536 টিসিপি সংযোগগুলি খুলতে পারে?

আমি বুঝতে পারি যে ইফেমেরাল পোর্টগুলির সংখ্যা (<65536) একটি স্থানীয় আইপি থেকে একটি দূরবর্তী আইপিতে একটি বন্দরে সংযোগের সংখ্যা সীমাবদ্ধ করে।

টিপল (লোকাল আইপি, লোকাল পোর্ট, রিমোট আইপি, রিমোট পোর্ট) হ'ল যা কোনও টিসিপি সংযোগকে স্বতন্ত্রভাবে সংজ্ঞায়িত করে; এটি কি বোঝায় যে এইগুলির মধ্যে যে কোনও একটিরও বেশি ফ্রি থাকলে 65K এর বেশি সংযোগগুলি সমর্থন করা যেতে পারে। যেমন একাধিক স্থানীয় আইপি থেকে একাধিক দূরবর্তী হোস্টে একক পোর্ট নম্বরে সংযোগ।

সিস্টেমে আরও 16 বিট সীমা আছে? ফাইল বর্ণনাকারীর সংখ্যা সম্ভবত?

উত্তর:


349

একক শ্রুতি পোর্ট একই সাথে একাধিক সংযোগ গ্রহণ করতে পারে।

একটি '64৪ কে' সীমা রয়েছে যা প্রায়শই উদ্ধৃত হয়, তবে এটি প্রতি ক্লায়েন্ট প্রতি সার্ভার পোর্টে হয় এবং এর স্পষ্টকরণ প্রয়োজন।

প্রতিটি টিসিপি / আইপি প্যাকেটের ঠিকানা দেওয়ার জন্য মূলত চারটি ক্ষেত্র রয়েছে; এইগুলো:

source_ip source_port destination_ip destination_port
< client            > < server                      >

টিসিপি স্ট্যাকের ভিতরে, এই চারটি ক্ষেত্র সংযোগের সাথে প্যাকেটগুলি মেলে ধরার জন্য যৌগিক কী হিসাবে ব্যবহৃত হয় (উদাহরণস্বরূপ ফাইল বর্ণনাকারী)।

যদি কোনও ক্লায়েন্টের একই গন্তব্যের একই পোর্টের সাথে অনেকগুলি সংযোগ থাকে, তবে সেই ক্ষেত্রগুলির মধ্যে তিনটি একই হবে - কেবলমাত্র source_portবিভিন্ন সংযোগের জন্য পৃথক হতে পারে । পোর্টগুলি 16-বিট সংখ্যা, অতএব কোনও প্রদত্ত ক্লায়েন্টের যে কোনও হোস্ট পোর্টের সাথে সংযোগের সর্বাধিক সংখ্যা 64K 64

তবে একাধিক ক্লায়েন্টের প্রত্যেকটির কোনও না কোনও সার্ভারের বন্দরে K৪ কে পর্যন্ত সংযোগ থাকতে পারে এবং যদি সার্ভারটির একাধিক পোর্ট থাকে বা হয় হয় বহুগৃহী হয় তবে আপনি এটিকে আরও গুণতে পারবেন।

সুতরাং আসল সীমাটি ফাইল বর্ণনাকারী। প্রতিটি স্বতন্ত্র সকেট সংযোগ একটি ফাইল বর্ণনাকারী দেওয়া হয়, তাই সীমাটি হ'ল সিস্টেমটি কনফিগার করা ফাইলগুলি সংস্থান করতে ও সংস্থানগুলি হ্যান্ডেল করার জন্য প্রকৃত সংখ্যারই ফাইল সংখ্যক। সর্বোচ্চ সীমা সাধারণত আপ 300K শেষ হয়ে গেছে, কিন্তু সঙ্গে কনফিগার যেমন হয় sysctl

সাধারণ বাক্সগুলির জন্য প্রায় K০ কে-এর মতো বাস্তবসম্মত সীমাবদ্ধতা উদাহরণস্বরূপ একক থ্রেডযুক্ত জ্যাবার মেসেজিং সার্ভারগুলি।


3
আপনি যদি (ক) SO_REUSEADDR ব্যবহার করেন এবং (খ) বিভিন্ন গন্তব্য আইপি ঠিকানা লক্ষ্য করে তাত্ত্বিকভাবে আপনার কাছে K৪ কে-র বেশি সংযোগ থাকতে পারে। তবে কার্নেলের স্মৃতি সীমা সম্ভবত আপনাকে প্রথমে থামিয়ে দেবে।
ডারন

4
সিস্কিটল সীমাটি পুরো সিস্টেমের জন্য, তাই না? ইউলিমিটের সাথে কনফিগারযোগ্য একটি সীমাও রয়েছে, যা কোনও প্রক্রিয়ার জন্য ফাইল বর্ণনাকারীর সর্বাধিক সংখ্যাকে সীমাবদ্ধ করে। এটি ডিফল্টরূপে 300K এর থেকে অনেক কম, সাধারণত
1024.

1
একটি সামান্য প্রযুক্তি: একটি ক্লায়েন্ট মেশিনে রাউটার থেকে একাধিক আইপি ঠিকানা বরাদ্দ থাকতে পারে। এগুলি সমস্ত একক ম্যাকের জন্য বরাদ্দ করা যেতে পারে, বা সেই মেশিনে অতিরিক্ত আইপি অ্যাড্রেসের জন্য একাধিক শারীরিক নেটওয়ার্ক ইন্টারফেস থাকতে পারে। ওপি 1 আইপি নির্দিষ্ট করেছে, তবে অন্যদের পক্ষে আরও বেশি আইপি অ্যাড্রেস না দেওয়ার বিষয়টি গুরুত্বপূর্ণ।
টড

2
@ উইল সুন্দরভাবে ব্যাখ্যা করা হবে !! খুব সহায়ক ... +100 উপস্থাপনা দিতে চাই ... আপনাকে ধন্যবাদ :-)
টম টেলর

1
সচেতন থাকুন যে tcp_fin_timeout একই সকেটটিকে (উত্স, লক্ষ্য, পোর্ট সংমিশ্রণ) ডিফল্টরূপে আরও 60 সেকেন্ডের জন্য অবরুদ্ধ করে দেয়, যা সংযোগগুলি সংযোগ বিচ্ছিন্ন হয়ে গেলে এবং ঘন ঘন পুনরায় সংযোগ স্থাপন করা হয় যদি দুটি সিস্টেমের মধ্যে প্রকৃত উপলব্ধ tcp সংযোগের সংখ্যা হ্রাস করে। TIME_WAIT রাজ্যে (tcp_tw_reuse = 1) সকেটগুলি পুনরায় ব্যবহার করার অনুমতি দেওয়ার মাধ্যমে (এই সময়টি সর্বদা সমর্থিত নয়) বা এই টাইমআউটটিকে হ্রাস করার ক্ষেত্রে টিসিপি / আইপি মান ভেঙে (সাধারণত যাইহোক ভাল কাজ করে) এই সমস্যাটি হ্রাস করা যায়।
fgwaller

17

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


14
সি 10 কে 10 বছরের পুরানো এবং আর মজা নেই। C1024K কীভাবে মোকাবেলা করা যায় তা দেখতে [এটি পড়ুন]।
চন্দ্রনশু

@Chandranshu - আপনি বোঝাতে চেয়েছেন metabrew.com/article/... ?
মিক্কো রেন্টালাইনেন

1
@ মিক্কো রেন্টালাইনেন - হ্যাঁ আমি মনে করি এখন আরও ভাল বেঞ্চমার্ক উপলব্ধ আছে। ফিনিক্সের ছেলেরা ইতিমধ্যে এটি 2 মিলিয়ন একযোগে সংযোগে ঠেলে দিয়েছে।
Chandranshu

3
@ চন্দ্রাংশু - 12 এম সংযোগ সহ ডেল ডেমো রয়েছে: mrotaru.wordpress.com/2013/06/20/…
মিক্কো রেন্টালাইনেন

1
বেশ কয়েক বছর আগে: ইনটেল অ্যাটম ডি 2700, 2 জিবি র‌্যাম, 1.2 এম সমবর্তী সংযোগগুলি। আমার কেবলমাত্র সমস্যাগুলি ছিল উইন্ডোজ বাক্সগুলির সাথে পরীক্ষার কাজে; ইন্টেল পরমাণু বাক্স
ডস

12

যদি আপনি কোনও কাঁচা সকেট ( SOCK_RAW) ব্যবহার করেন এবং ব্যবহারকারীর টিসিপি পুনরায় প্রয়োগ করেন তবে আমি মনে করি উত্তরটি কেবলমাত্র এই ক্ষেত্রে (local address, source port, destination address, destination port)টিপলসের সংখ্যা দ্বারা সীমাবদ্ধ (স্থানীয় ঠিকানায় প্রতি ~ 2 ^ 64) limited

অবশ্যই এই সমস্ত সংযোগের অবস্থা ধরে রাখতে প্রচুর স্মৃতি লাগবে এবং আমি মনে করি কার্নেল টিসিপি স্ট্যাকটি খারাপ হতে এবং / বা আপনার পক্ষ থেকে সাড়া না দেওয়ার জন্য আপনাকে কিছু iptables বিধি তৈরি করতে হবে।

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