ফাইল বর্ণনাকারীর সংখ্যার সীমাবদ্ধতা


34

আমি ইনস্টল করার চেষ্টা করছি 389-dsএবং এটি আমাকে এই সতর্কতা দেয়:

WARNING: There are only 1024 file descriptors (hard limit) available, which limit the number of simultaneous connections.

আমি ফাইল বর্ণনাকারী সম্পর্কে বুঝতে পারি, তবে নরম এবং শক্ত সীমা সম্পর্কে আমি বুঝতে পারি না।

আমি যখন দৌড়ে যাই cat /proc/sys/fs/file-max, আমি ফিরে আসি 590432। এর দ্বারা বোঝানো উচিত যে আমি 590432 ফাইল খুলতে পারি (অর্থাত্ 590432 ফাইল ডেস্ক্রিপ্টার থাকতে পারে)।

তবে যখন আমি দৌড়ে যাই ulimit, এটি আমাকে বিভিন্ন ফলাফল দেয়:

$ ulimit
unlimited

$ ulimit -Hn    # Hard limit
4096

$ ulimit -Sn    # Soft limit
1024

তবে এর থেকে শক্ত / নরম সীমাটি কী ulimitএবং তারা কীভাবে সঞ্চিত সংখ্যার সাথে সম্পর্কিত /proc/sys/fs/file-max?

উত্তর:


39

কার্নেল ডকুমেন্টেশন অনুসারে , /proc/sys/file-maxশ্বাসরোধের আগে কার্নেলটি ফাইল, বর্ণনাকারীর সর্বোচ্চ, মোট, গ্লোবাল সংখ্যা বরাদ্দ করবে। এটি কার্নেলের সীমা, আপনার বর্তমান ব্যবহারকারীর নয়। সুতরাং আপনি করতে পারেন 590432 খুলুন, প্রদত্ত আপনি একটি অলস সিস্টেমে একা (সিঙ্গল ইউজার মোডে, কোন ডেমন চলমান)।

নোট করুন যে ডকুমেন্টেশনটির মেয়াদ শেষ হয়ে গেছে: ফাইলটি proc/sys/fs/file-maxদীর্ঘ সময় ধরে রয়েছে। এটি নির্দেশ করার জন্য মার্টিন জাম্বানকে ধন্যবাদ।

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

মনে রাখবেন যে আপনি যদি নরম সীমাটির (এবং আপনি সুপারভাইজার নন) নীচে একটি হার্ড সীমাটি কম করার চেষ্টা করেন তবে আপনি EINVALফিরে পাবেন (অবৈধ যুক্তি)।

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

আপনার অন্যান্য আবাহন, ulimit -Hnরিপোর্ট -nসীমা (খোলা ফাইল বর্ণনাকারী সর্বোচ্চ সংখ্যক), না-f সীমা, যার কারণে নরম সীমা হার্ড সীমা বেশী মনে হয়। আপনি প্রবেশ করলে ulimit -Hfআপনি 'সীমাহীন' পাবেন।


14
লিনাক্স ৪.৪.০ এ ফাইল-সর্বাধিক পাথ /proc/sys/fs/file-max
মার্টিন জাম্বন

অনুগ্রহ করে হার্ড সীমাটি কি ulimit -Hn ফাইলের বর্ণনাকারী ক্ষমতা বরাদ্দ করার সিস্টেমের খুব সীমা লক্ষ্য করে?
ওয়েবউইম্যান

2
@ ওয়েবেম্যান: না, তা হয় না। ulimitকেবলমাত্র বর্তমান প্রক্রিয়ার সীমাবদ্ধতা প্রভাবিত করে । বর্তমান প্রক্রিয়াটির সীমা শিশুদের প্রক্রিয়াগুলিতেও দান করা হয় তবে প্রতিটি প্রক্রিয়াটির আলাদা গণনা রয়েছে। উদাহরণস্বরূপ ulimit -Hn 10, আপনার কাছে যে কোনও এক সময় 10 টি ফাইল বর্ণনাকারী খোলা থাকতে পারে। আপনার তৈরি প্রতিটি শিশু প্রক্রিয়াতে কেবল 10 টি পর্যন্ত ফাইল বর্ণনাকারী থাকতে পারে। কেবলমাত্র সুপারউজার একবার সেট করে সীমা বাড়িয়ে দিতে পারে। যদি আপনি এটিকে খুব কম সেট করেন তবে আপনার একমাত্র বিকল্প হতে পারে আপনার শেল প্রক্রিয়াটি মেরে ফেলা এবং একটি নতুন শুরু করা।
অ্যালেক্সিয়াস

0

"সিলেক্ট" সিস্টেম কলটি ইউনিক্সের অনেক ভয়ানক মস্তিষ্কের মৃত নকশার সিদ্ধান্তগুলির মধ্যে একটি যা এমনকি উইন্ডোজ 95 কে তুলনায় এত ভাল দেখায়।

এটি 20 বছর আগে নিষিদ্ধ করা উচিত ছিল এবং তারপরে আমরা এখনই সমস্যা ছাড়াই সীমাহীন ফাইল হ্যান্ডলারের সক্ষমতা অর্জন করতে পারি।

আপনি কার্নেল কনফিগারেশনের সাহায্যে ফাইল বর্ণনাকারীর সংখ্যা সহজেই বাড়িয়ে তুলতে পারেন তবে BUTIMITE মনে রাখবেন যে কোনও লাইব্রেরি যদি "সিলেক্ট" সিস্টেম কল ব্যবহার করে আপনার প্রোগ্রামটি অস্থির হয়ে উঠবে (স্মৃতি দুর্নীতি) এবং ব্যর্থ হয়।

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


আপনার মন্তব্যটি একটি দরকারী সতর্কতা, তবে র‌্যাঙ্কিংয়ের সুর নেওয়ার পরিবর্তে fd_set(3)ম্যান পৃষ্ঠাটি উদ্ধৃত করা এবং সীমাটি এসেছে তার থেকে আরও অনেক বেশি দরকারী হত FD_SETSIZE। এবং শ্রেষ্ঠ মত একটি প্রতিস্থাপন কলের একটি প্রস্তাবনা হত poll(3), এই হিসেবে উত্তর
Davor Cubranic
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.