2 f 21, উবুন্টু 16.04 পাস করার পরে ওপেনফাইल्स সীমাটি স্বয়ংক্রিয়ভাবে হ্রাস পায়


1

nofileআমার ব্যবহারকারীর সম্পর্কে (যা অবশ্যই sudoসুবিধা রয়েছে) সম্পর্কিত কঠোর এবং নরম উভয় সীমা নির্ধারণ করার চেষ্টা করার সময় আমি একটি অদ্ভুত আচরণ লক্ষ্য করেছি ।

আমার সামগ্রিক সিস্টেম আবদ্ধ 2 ^ 22, এবং আমি 2 ^ 23 সেট আপ করার পরেও নিম্নলিখিতগুলি করার চেষ্টা করেছি।

আমি কোনও সমস্যা ছাড়াই নিখুঁতভাবে নরম এবং কঠোর উভয় সীমা 2 set 20 অবধি সেট করতে পেরেছি। (যার অর্থ আমি তাদের ব্যবহার করে নমুনা দেওয়ার পরে আমি ulimit -Sn,and -Hnসুনির্দিষ্ট মানগুলি পেয়েছি)।

আমি যখন তাদের 2 ^ 21 বা তার চেয়ে বেশি স্থির করে রাখি, আমি ব্যবহারকারীকে পুনরায় ব্লগ করার পরে (পরিবর্তনগুলি প্রয়োগ করার জন্য), কঠোর সীমা এবং নরম সীমা উভয় হ্রাস পেয়ে যথাক্রমে 4096 এবং 1024 হয়।

আমি এটি সম্পর্কে অনলাইনে কিছু খুঁজে পাচ্ছি না এবং আমার সন্দেহ হয় যে এই মানগুলি সংরক্ষণ করতে ব্যবহৃত ভেরিয়েবলগুলির সাথে এর কিছু সম্পর্ক রয়েছে (ব্যক্তিগতভাবে আমি এটি 2 somewhere 32 বা এমনকি 2 ^ 33 এর কাছাকাছি হওয়ার আশা করছিলাম) যদি সেগুলি সংজ্ঞায়িত করা হয় uintতবে তা অবশ্যই নয়)।

উত্তর:


0

ডকুমেন্টেশন / sysctl / fs.txt এ নথিভুক্ত দুটি সিস্টেম-প্রশস্ত সীমা রয়েছে বলে মনে হয়

  • fs.file-max পুরো সিস্টেমে সর্বাধিক সংখ্যক ওপেন ফাইল (ফাইলহ্যান্ডলস)।
  • fs.nr_openখোলা ফাইলগুলির প্রতি-প্রক্রিয়া সংখ্যার জন্য বিশ্বব্যাপী উচ্চতর সীমা এবং এটি সেট করে RLIMIT_NOFILEযা এর মান সীমাবদ্ধ করে ulimit -n। আশ্চর্যজনকভাবে, ডিফল্টটি 1024 * 1024 বা 2 ^ 20 হয়।

তাই:

# sysctl fs.nr_open
fs.nr_open = 1048576
# ulimit -Hn 1048577
-su: ulimit: open files: cannot modify limit: Operation not permitted
# sysctl fs.nr_open=$[ 2**22 ] 
fs.nr_open = 4194304
# ulimit -Hn 4000000            # now it can be set

তবে file-maxপ্রতি-প্রক্রিয়া সীমা নির্ধারণ করা আটকাচ্ছে বলে মনে হচ্ছে না, পুরো সময়টিতে আমার এই সেটটি ছিল:

# sysctl fs.file-max
fs.file-max = 262144

সুতরাং যা কিছু আপনার সীমাবদ্ধতা নির্ধারণ করে ( pam_limits.so?), এটি সম্ভবত সিস্টেমে নির্ধারিত সীমাবদ্ধতার কারণে সিস্টেম কলটিতে ত্রুটিটি পাচ্ছে এবং উপেক্ষা করছে। অথবা সম্ভবত এটি কোনও ত্রুটি লগ করবে, আপনার লগগুলি চেক করুন check


আমি fs.nr_openপ্যারামিটারটি পরীক্ষা করে দেখব । আপনার উত্তর সম্পর্কে আমার দুটি প্রশ্ন রয়েছে: 1) আমার মেশিনের আচরণটি সীমাবদ্ধতার চেয়ে বেশি সীমা নির্ধারণের পরে এখানে বর্ণনা করার সাথে সাথে ত্রুটি নির্গতের পরিবর্তে উভয় সীমাতে স্বয়ংক্রিয়ভাবে হ্রাস ছিল nr_open। 2) সুতরাং file-maxআমরা যদি কেবল কোনও ব্যবহারকারীর / প্রকল্পের ভিত্তিতে এটি পাস করতে পারি তবে আসলে কী করবে? এটি কি কোনও নীতি প্রয়োগ করে?
গোল্ডেনস্পেকপস

@ গোল্ডেনস্পেকস, ১) আচ্ছা, আপনি যদি একে একে সেট করার চেষ্টা না করেন তবে আসল সীমাটি কী? এটি কি এর মতোই ছেড়ে যায়, বা 1024 সীমাটি কেবল কোনও কিছু দ্বারা নির্ধারিত একটি স্বেচ্ছাসেবক? বলা শক্ত, আপনি সীমাবদ্ধতা নির্ধারণ করতে কী ব্যবহার করছেন তা আমি জানি না। 2) ডকুমেন্টেশন অনুসারে, এটি কার্নেল বরাদ্দ করবে এমন ফাইল সর্বাধিক সংখ্যক ফাইল। আমি ধরে নিলাম এটি একটি নীতি সীমা চেয়ে প্রযুক্তিগত সীমা মত বেশি। তবে অবশ্যই নীতি সীমা নির্বিশেষে কার্নেল কোনও বরাদ্দ না দিলে নতুন ফাইল হ্যান্ডেলগুলি পাওয়া শক্ত হবে।
ইলকচাচু

@ ইক্কাছু, ১) মূল সীমাটি ডিফল্ট, যথাক্রমে নরম এবং শক্ত লিঙ্কগুলির জন্য 1024, 4096। আপনি উল্লিখিত হিসাবে nr_open 2 ** 20 হয়। আমি সীমাবদ্ধতা ফাইল ফাইল সম্পাদনা করে সীমা নির্ধারণ করছি। এই প্রশ্নে আমি কেবল এটি বুঝতে আগ্রহী যে কেন আমার সিস্টেম কোনও বার্তা আউটপুট দেয় না এটির অনুমতি নেই এবং পরিবর্তে কেবল সীমাবদ্ধতাগুলি ডিফল্ট মানগুলিতে পুনরায় সেট করে। 2) এই প্রশ্নটি সম্পর্কে যদিও আমার একই ছিল, আমি অনুমান করি যে ফাইল-সর্বাধিক সীমাটি কেবল রানটাইমে প্রয়োগ করা হয়েছে, তবে আমি এই অনুমানের জন্য একটি ডকুমেন্টেড যাচাইকরণ পাচ্ছি না। আমার ধারণা আমি এটি একটি ভিএম-তে পরীক্ষা করব।
গোল্ডেনস্পেকপস

@ গোল্ডেনস্পেকস, যেমনটি আমি বলেছিলাম, আপনার লগগুলি চেক করুন। আমার ডেবিয়ানে, pam_limits.soএটি যদি সংস্থান সীমাটি নির্ধারণ করতে না পারে তবে একটি ত্রুটি লগ করে:Mar 15 12:21:11 xxx sshd[4178]: pam_limits(sshd:session): Could not set limit for 'nofile' to soft=1048577, hard=1048577: Operation not permitted; uid=0,euid=0
ইলক্কাচু

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