লিনাক্সে সর্বাধিক অনুমোদিত সর্বাধিক অনুমোদিত ফাইল open


10

আপনি লিনাক্সে সর্বাধিক সংখ্যক ওপেন ফাইল কনফিগার করতে পারবেন তার কতগুলি (প্রযুক্তিগত বা ব্যবহারিক) সীমা রয়েছে? যদি আপনি এটিকে খুব বড় সংখ্যায় কনফিগার করেন (1-100M বলুন) তবে কিছু প্রতিকূল প্রভাব রয়েছে কি?

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


তাত্ত্বিকভাবে, আপনি উপলব্ধ যে মেমরি এবং প্রতিটি fd 1K মেমরি গ্রাহ্য
অ্যালিস্টার ম্যাককর্ম্যাক

উত্তর:


10

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

তবে র‌্যাম আধুনিক সিস্টেমগুলি 10 বছর আগে সিস্টেমগুলির সাথে তুলনা করে কত অযৌক্তিকভাবে দেওয়া হয়েছে, আমি মনে করি আজ ডিফল্টগুলি বেশ কম।

২০১১ সালে লিনাক্সে ফাইল বর্ণনাকারীদের ডিফল্ট হার্ড সীমা 1024 থেকে 4096 এ উন্নীত করা হয়েছিল ।

কিছু সফ্টওয়্যার (উদাঃ মঙ্গোডিবি) ডিফল্ট সীমা চেয়ে অনেক বেশি ফাইল বর্ণনাকারী ব্যবহার করে। মঙ্গোডিবি লোকেরা এই সীমাটি 64৪,০০০-এ বাড়ানোর পরামর্শ দিচ্ছে । আমি rlimit_nofileনির্দিষ্ট অ্যাপ্লিকেশনগুলির জন্য 300,000 এর একটি ব্যবহার করেছি ।

যতক্ষণ আপনি ডিফল্ট (1024) এ নরম সীমা রাখেন ততক্ষণ সীমাবদ্ধতা বাড়ানো সম্ভবত যথেষ্ট নিরাপদ। প্রোগ্রামগুলি setrlimit()তাদের সীমাটি নরম সীমা ছাড়িয়ে যাওয়ার জন্য কল করতে হবে এবং এখনও কঠোর সীমাবদ্ধতায় আবদ্ধ।

সম্পর্কিত কিছু প্রশ্নও দেখুন:


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

আমি সীমাটি প্রায় 1 মিলিয়ন ছাড়িয়ে দেখানো অসম্ভব বলে মনে করি। আমি মনে করি এটি কার্নেলের মধ্যে হার্ড-কোডড হতে পারে, কারণ অনেকগুলি কনফিগারেশন পরিবর্তন করা সত্ত্বেও, আমি এর বাইরে বাড়াতে পারি না। superuser.com/questions/1468436/…
পাভেল কোমারোভ

3

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

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

আপনার যদি এই সীমাগুলির কোনও বাড়ানোর যথাযথ কারণ না থাকে তবে আপনার এটিকে এড়ানো উচিত এবং আরও ভাল ঘুমানো উচিত।


2

এটি প্রযুক্তিগতভাবে সাইনড লম্বার (সি ল্যাং) সর্বাধিক মান অর্থাৎ 4,294,967,295 এর মধ্যে সীমাবদ্ধ

তথ্যসূত্র: fs.hফাইল

/* And dynamically-tunable limits and defaults: */
struct files_stat_struct {
  unsigned long nr_files;   /* read only */
  unsigned long nr_free_files;  /* read only */
  unsigned long max_files;    /* tunable THIS IS OUR VALUE */
};

2
এর জন্য আপনার কি কোনও রেফারেন্স আছে?
টিম

এছাড়াও 32 বিট, সর্বোচ্চ মান যে স্বাক্ষরিত পূর্ণসংখ্যা, 32-বিট স্বাক্ষরবিহীন পূর্ণসংখ্যা সর্বোচ্চ মান 4.294.967.295 হয়।
সাম্পো

আপনি ঠিক বলেছেন, সাম্পো। আমার ভুল.
লিওনার্ড টি

0

আমি মনে করি আপনার উদ্বেগ বোধগম্য তবে সম্ভবত লিনাক্স কনফিগার করা (তবে ফাইল বর্ণনাকারী ব্যবহৃত হয়নি) এর জন্য খুব বেশি মেমরি গ্রহণ করবে না :)

আমি আমার পেশাগত জীবনে গত 10 বছর ধরে এমন সমস্যা মনে করতে পারি না।

শুভেচ্ছা।


0

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

আমি দেখেছি সিস্টেম থেকে সিস্টেমে সীমাবদ্ধতা পরিবর্তিত হচ্ছে। থেকে getlimit মানুষ আপনি যে পৃষ্ঠাটি দেখতে পারেন RLIMIT_NOFILE-1অভ্যন্তরীণভাবে নির্দিষ্ট করে সীমা।

RLIMIT_NOFILE মান পরীক্ষা করতে আপনি একটি টিপল পেতে নীচের বিবৃতিটি ব্যবহার করতে পারেন

python -c "import resource; print(resource.getrlimit(resource.RLIMIT_NOFILE))"

টিপল ফলাফল (সফটমিট, হার্ডলিট) হিসাবে প্রত্যাবর্তন করে। আমার জন্য একাধিক সিস্টেমে ফলাফল চালানো নীচের মত

(1024, 1048576) # on UBUNTU linux 
(65536, 65536)  # on amazon linux 
(1024, 9223372036854775807) # on macos 

দ্রষ্টব্য: 9223372036854775807 এই সংখ্যাটির সহজ অর্থ অনন্ত। আপনি এটি আঘাত করার আগে আপনি সর্বদা অন্যান্য উত্স সীমাতে পৌঁছে যাবেন। আপনি যদি সিস্টেমে হার্ডলিটকে তার চেয়ে বেশি পরিবর্তন করে থাকেন তবে আপনাকে কার্নেল প্যারামগুলি পরিবর্তন করতে হবে।

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