প্রশ্ন একটি উচ্চ ভলিউম সিস্টেমের জন্য প্রাকটিক্যাল সর্বোচ্চ ওপেন ফাইল বর্ণনাকারী (ulimit -n)


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

আমরা একটি ডেল 1955 এ RHEL 5 চলমান হয়:

CPU: 2 x ডুয়াল কোর 2.66GHz 4MB 5150 / 1333FSB র্যামঃ 8 গিগাবাইট র্যাম HDD: 2 x 160 গিগাবাইট 2.5 "SATA হার্ড ড্রাইভ

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

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

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


69
2017-07-31 22:35


উত্স




উত্তর:


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

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

Ulimit স্থাপন করা হচ্ছে:

# ulimit -n 99999

Sysctl সর্বোচ্চ ফাইল:

#sysctl -w fs.file-max=100000

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


70
2017-08-01 13:08



@ শুকুরি ধন্যবাদ। আমরা স্পষ্টভাবে সম্পদ leaks সম্পর্কে উদ্বিগ্ন কিন্তু যে ক্ষেত্রে বলে মনে হচ্ছে না। আমরা lsof এবং netstat উভয় পর্যবেক্ষক হয়েছে এবং যখন সংখ্যা উচ্চ হয়, তারা ক্রমবর্ধমান রাখা না, তারা প্রসারিত এবং চুক্তি। আমি আশা করি যে যদি লিক থাকে তবে খোলা সকেট বা বর্ণনাকারীর সংখ্যা সময়ের সাথে সাথে বাড়তে থাকবে। - Kevin
দ্য ulimit সীমা ব্যবহারকারী প্রতি নয়, কিন্তু প্রতি প্রক্রিয়া! দেখ unix.stackexchange.com/questions/55319/...  এবং fs.file-max সেটিংটি সম্পূর্ণরূপে সার্ভারের জন্য (তাই একসাথে সমস্ত প্রক্রিয়া)। - Tonin


আপনি সবসময় শুধু পারে

cat /proc/sys/fs/file-nr

'লোড লোড' অবস্থায় কত ফাইল বর্ণনাকারী ব্যবহার করা হয় তা দেখতে।

সর্বাধিক হিসাবে - এটা শুধু আপনি কি করছেন উপর নির্ভর করে।


13
2018-05-18 12:22



এখানে আমি চিন্তা করছিলাম যে 143000 ভাল ছিল যখন উপরের কমান্ড আমাকে দেখিয়েছিল 8288 0 793377! - Sridhar-Sarnobat


ফাইল ডিস্ক্রিপ্টরগুলি যদি টিসিপি সকেট, ইত্যাদি থাকে, তবে আপনি সকেট বাফার এবং অন্যান্য কার্নেল বস্তুর জন্য প্রচুর পরিমাণে মেমরি ব্যবহার করে ঝুঁকির সম্মুখীন হন; এই মেমরি swappable যাচ্ছে না।

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

আমরা কোনও সমস্যা ছাড়াই ~ 10k ফাইলের ডিস্ক্রিপ্টারগুলির সাথে ডেটাবেস সার্ভারগুলি চালাতে পারি (বেশিরভাগ ক্ষেত্রেই প্রকৃত ডিস্ক ফাইলগুলিতে), তবে এটি 64-বিট এবং RAM এর লোড থাকে।

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


6
2017-08-01 12:27





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

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

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


2
2017-07-31 22:53



@ গ্রাহামক্স সিস্টেমটি এই অ্যাপ্লিকেশনের জন্য এবং ব্যবহারকারী যে অ্যাপ্লিকেশন চালায় সেটি শুধুমাত্র এই অ্যাপ্লিকেশনটি চালায়। আমি ইন-হাউস ডেভিড দলের অংশ, তাই সেখানে কোন সাহায্য নেই। - Kevin
সীমা ব্যবহারকারী প্রতি নয়, কিন্তু প্রতি প্রক্রিয়া। দেখ unix.stackexchange.com/questions/55319/... - Tonin


আমার মনে হয় এটিগুলির একটি প্রশ্ন সেরা "এটি একটি উন্নয়ন পরিবেশে পরীক্ষা করে দেখুন"। আমি বছর আগে মনে রাখবেন সূর্য স্নায়বিক যখন আপনি এই সঙ্গে messed, কিন্তু যে স্নায়বিক না। এটির সীমাটি 1024 এরও বেশি ছিল, তাই আমি দেখতে পেলাম যে এটি লিনাক্সের জন্য একই রকম, মনে হচ্ছে এটি উচ্চতর হওয়া উচিত।

যখন আমি আপনার প্রশ্নের জবাবের জন্য Googled আমি নিম্নলিখিত লিঙ্ক শিক্ষা পাওয়া যায়: http://www.netadmintools.com/art295.html

এবং এই এক এছাড়াও: https://stackoverflow.com/questions/1212925/on-linux-set-maximum-open-files-to-unlimited-possible


1
2017-08-01 00:51