কীভাবে ulimit -n এবং / proc / sys / fs / file-max পার্থক্য করতে পারে?


32

আমি লক্ষ্য করেছি যে একটি নতুন সেন্টোস চিত্রটিতে আমি সবেমাত্র ইসি 2 বন্ধ করে দিয়েছি যে উলিমিট ডিফল্টটি 1024 ওপেন ফাইল, তবে / proc / sys / fs / ফাইল-ম্যাক্স 761,408 এ সেট করা আছে এবং আমি ভাবছি যে এই দুটি সীমা কীভাবে কাজ করবে একসঙ্গে। আমি অনুমান করছি যে ulimit -n ফাইল-বর্ণনাকারীর সংখ্যার প্রতি ব্যবহারকারীর সীমা যখন / proc / sys / fs / file-max সিস্টেম-প্রশস্ত? যদি এটি হয় তবে বলুন যে আমি একই ব্যবহারকারীর হিসাবে দ্বিগুণ লগ ইন করেছি - প্রতিটি লগ-ইন করা ব্যবহারকারীর কি খোলা ফাইলের সংখ্যার উপর 1024 সীমা থাকে, বা লগ-ইন হওয়া প্রতিটিটির মধ্যে 1024 সম্মিলিত ওপেন ফাইলের সীমা থাকে? ব্যবহারকারীদের মধ্যে?

আপনার সিস্টেমটি খুব বেশি ফাইল খুলতে না পারলে খুব বেশি সংখ্যক স্থানে আপনার সর্বোচ্চ ফাইল বর্ণনাকারীদের সেট করার ক্ষেত্রে কী পারফরম্যান্স প্রভাব রয়েছে?


যোগ করা ট্যাগগুলি: বাশ লিনাক্স কার্নেল সিস্টেম-সংস্থানসমূহ
ওয়ার্নার

উত্তর:


28

file-maxকার্নেল স্তরের উপর প্রয়োগ করা সর্বাধিক ফাইল বর্ণনাকারী (এফডি), যা বৃদ্ধি না করে সমস্ত প্রক্রিয়া দ্বারা অতিক্রম করা যায় না। ulimitএকটি প্রক্রিয়া স্তর, যা কম হতে পারে জারি করা হয়েছে file-max

বৃদ্ধি করে কোনও পারফরম্যান্স এফেক্ট ঝুঁকি নেই file-max। আধুনিক বিতরণে সর্বাধিক এফডি সেট রয়েছে বেশ উচ্চতর, অতীতে অতীতে 1024 অতীত বাড়ানোর জন্য কার্নেল পুনঃসংশোধন এবং সংশোধন প্রয়োজন a

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


আমার বোঝাটি কি সঠিক, যে ইউলিমিট ব্যবহার করে প্রতি ব্যবহারকারী সীমা নির্ধারণ করা সমস্ত ব্যবহারকারীর জন্য একই? ব্যবহারকারী হিসাবে বিভিন্ন মান ব্যবহার করার উপায় আছে কি না?
অলিভার

হ্যাঁ, সেটিংসগুলি বিশ্বব্যাপী এবং ব্যবহারকারী হিসাবে প্রতিটি ভিত্তিতে সেট করা যেতে পারে।
ওয়ার্নার

আমি যদি আপনার পোস্টটি সঠিকভাবে পাই তবে এটি সত্য নয়। এটা তোলে ব্যবহারকারী XY দ্বারা উত্পন্ন হওয়া প্রক্রিয়া প্রতি, এবং এই ফাইল সিস্টেম সর্বাধিক /etc/sysctl.conf সংজ্ঞায়িত দ্বারা সীমাবদ্ধ
Jeredepp

3
ulimitসীমা ব্যবহারকারী প্রতি নয়, কিন্তু প্রক্রিয়া প্রতি! দেখুন unix.stackexchange.com/questions/55319/...
Tonin

@ টনিন - হ্যাঁ, এই উত্তরটি ঠিক ভুল।
নিমো

11

ইউলিমিটের সীমাবদ্ধতা অনন্য ব্যবহারকারীর প্রতি। সুতরাং ব্যবহারকারী 1, কতবার লগ ইন বা প্রসেস চলমান নির্বিশেষে 1024 এর মধ্যে সীমাবদ্ধ থাকবে It's এটি একত্রিত।

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

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

উদাহরণ স্বরূপ:

me@superme:~$ ulimit -n
1024
me@superme:~$ lsof | grep $USER | wc -l
8145

এখানে একটি পার্ল উদাহরণ যেখানে আমরা সীমাতে পৌঁছাচ্ছি (এটি প্রতি-প্রক্রিয়া সীমা):

#!/usr/bin/perl

$count = 0;
@filedescriptors;

while ($count <= 1024) {
    $FILE = ${count};
    open $FILE, ">", "/tmp/example$count" or die "\n\n FDs: $count $!";
    push(@filedescriptors, $FILE);
    $count ++;
}

ফলাফল:

FDs: 1021 Too many open files at ./test.pl line 8.

1021 কারণ যখন লুপটি পৌঁছানোর আগে 3 টি ওপেন ফাইল বর্ণনাকারী ছিল (স্টাডআউট, স্টিডিন এবং স্টেডার)

আমি পুরোপুরি ভুল হলে বা উত্তরটি ভুল বুঝে ফেললে দুঃখিত।


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