একটি উচ্চ ভলিউম সিস্টেমের জন্য ব্যবহারিক সর্বাধিক উন্মুক্ত ফাইল বর্ণনাকারী (ulimit -n)


76

আমরা সম্প্রতি আমাদের অ্যাপ্লিকেশনটির লোড পরীক্ষা শুরু করেছি এবং লক্ষ্য করেছি যে এটি প্রায় 24 ঘন্টা পরে ফাইল বর্ণনাকারীর বাইরে চলে গেছে।

আমরা একটি ডেল 1955 তে RHEL 5 চালাচ্ছি:

সিপিইউ: 2 এক্স ডুয়াল কোর 2.66GHz 4MB 5150 / 1333FSB র‌্যাম: 8 জিবি র‌্যাম এইচডিডি: 2 এক্স 160 জিবি 2.5 "সটা হার্ড ড্রাইভ

আমি ফাইল বর্ণনাকারীর সীমা পরীক্ষা করেছিলাম এবং এটি 1024 এ সেট করা হয়েছিল। আমাদের অ্যাপ্লিকেশনটিতে প্রায় 1000 আগত সংযোগের পাশাপাশি 1000 বহির্গামী সংযোগ থাকতে পারে তা বিবেচনা করে এটি বেশ কম বলে মনে হয়। খোলার দরকার আছে এমন কোনও প্রকৃত ফাইলের উল্লেখ না করা।

আমার প্রথম চিন্তাটি ছিল মাত্র কয়েক মাত্রার মাত্রা অনুসারে ulimit -n প্যারামিটারটি বাড়ানো এবং তারপরে পরীক্ষাটি পুনরায় চালানো কিন্তু আমি এই পরিবর্তনশীলটিকে খুব বেশি সেট করার কোনও সম্ভাব্য বিস্তৃতি জানতে চাইছিলাম।

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

উত্তর:


73

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

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

উলামিট সেট করা হচ্ছে:

# ulimit -n 99999

সিসেক্টল সর্বাধিক ফাইল:

#sysctl -w fs.file-max=100000

এছাড়াও, এবং খুব গুরুত্বপূর্ণ, আপনার অ্যাপ্লিকেশনটির একটি মেমরি / ফাইল বর্ণনাকারী ফাঁস আছে কিনা তা আপনাকে পরীক্ষা করতে হবে। সেগুলি বৈধ আছে কি না তা দেখার জন্য lsof ব্যবহার করুন open অ্যাপ্লিকেশন বাগের চারপাশে আপনার সিস্টেমটি পরিবর্তন করার চেষ্টা করবেন না।


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

2
ulimitসীমা ব্যবহারকারী প্রতি নয়, কিন্তু প্রক্রিয়া প্রতি! Unix.stackexchange.com/questions/55319/… দেখুন এবং fs.file-maxসেটিংস সম্পূর্ণরূপে সার্ভারের জন্য (সুতরাং সমস্ত প্রক্রিয়া একসাথে)।
টোনিন

15

আপনি সর্বদা ন্যায়বিচার করতে পারে

cat /proc/sys/fs/file-nr

'উচ্চ লোড' পরিস্থিতির সময় কতগুলি ফাইল বর্ণনাকারী ব্যবহৃত হচ্ছে তা দেখতে।

সর্বাধিক হিসাবে - এটি কেবলমাত্র আপনি যা করছেন তার উপর নির্ভর করে।


এখানে আমি ভাবছিলাম 143000 যথেষ্ট ছিল যখন উপরের আদেশটি আমাকে দেখিয়েছিল 8288 0 793377!
শ্রীধর সারনোবাত

6

যদি ফাইল বর্ণনাকারীরা টিসিপি সকেট ইত্যাদি হয় তবে আপনি সকেট বাফার এবং অন্যান্য কার্নেল বস্তুর জন্য প্রচুর পরিমাণে মেমরি ব্যবহার করতে পারবেন; এই স্মৃতিটি পরিবর্তনযোগ্য হবে না।

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

আমরা কোনও বড় সমস্যা ছাড়াই 10 ডলার ফাইল বর্ণনাকারী খোলা (বেশিরভাগ আসল ডিস্ক ফাইলগুলিতে) দিয়ে ডাটাবেস সার্ভারগুলি চালিত করি তবে সেগুলি 64-বিট এবং র‍্যামের প্রচুর পরিমাণে রয়েছে।

উলিমিট সেটিং প্রতি প্রক্রিয়াধীন, তবে সিস্টেম-বিস্তৃত সীমাও রয়েছে (32 কে আমি ডিফল্ট বলে মনে করি)


2

আমি ব্যক্তিগতভাবে কোনও সেরা অনুশীলন সম্পর্কে সচেতন নই। এটি সিস্টেম ফাংশনের উপর নির্ভর করে কিছুটা বিষয়গত।

মনে রাখবেন যে আপনি যে 1024 টি দেখছেন তা হ'ল প্রতি ব্যবহারকারী সীমা এবং সিস্টেম ব্যাপী সীমা নয়। আপনি এই সিস্টেমে কতটি অ্যাপ্লিকেশন চালান তা বিবেচনা করুন। এই একটাই কি? এই অ্যাপ্লিকেশনটি চালিত ব্যবহারকারী কি অন্য কিছু করছেন? (IE আপনার কি এই অ্যাকাউন্টটি ব্যবহার করে লোকেরা লগইন করতে এবং স্ক্রিপ্টগুলি চালনার জন্য ব্যবহার করে যা সম্ভবত সম্ভাব্যভাবে পালাতে পারে?)

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


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

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

1

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

আমি যখন আপনার প্রশ্নের উত্তরের জন্য গুগল করেছিলাম তখন আমি নীচের লিঙ্কটি শিক্ষাগত পেয়েছি: http://www.netadmintools.com/art295.html

এবং এটির একটিও: https://stackoverflow.com/questions/1212925/on-linux-set-maximum-open-files-to- unmitted-possible

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