লিনাক্সে আমি কীভাবে মুক্ত ফাইলের সীমা পরিবর্তন করতে পারি? [বন্ধ]


194

আমার অ্যাপ্লিকেশন চালানোর সময় আমি মাঝে মাঝে ত্রুটি পাই too many files open

চলমান ulimit -aপ্রতিবেদন করে যে সীমা 1024। আমি কীভাবে 1024 এর উপরে সীমা বাড়িয়ে দেব?

ulimit -n 2048অনুমতি ত্রুটিতে ফলাফল সম্পাদনা করুন


আরও দেখুন: unix.stackexchange.com/a/8949/231660
গাই

আমি কেবল সেন্টোস 7 (আরএইচইএল-তে একই) এর মধ্য দিয়ে গিয়েছিলাম এবং এটিতে একটি ব্লগ পোস্ট তৈরি করেছি কারণ এই সমস্ত পোস্টের সাথেও আমার এতটা সমস্যা হয়েছিল: কোডিং-স্ট্রিম-অফ-সচেতনতা ডটকম / ২০১৮ / १२ / ২২ / ২২ । প্রায়শই খোলা ফাইলগুলির পাশাপাশি, আপনাকে এনপ্রোক বাড়াতে হবে যা প্রকৃতপক্ষে একাধিক সেটিংস ফাইলগুলিতে থাকে ... এবং আপনি যদি সিস্টেমড / সিস্টেমটেক্স ব্যবহার করেন যার নিজস্ব পৃথক সেটিংস রয়েছে। এটা বাদাম ধরনের।
জন হামফ্রেস - w00te

: আপনি লিনাক্স VSCode ব্যবহার করে থাকেন এই কার্যসংক্রান্ত যথাসাধ্য সাহায্যের stackoverflow.com/a/55027686/1190948
জুড়ী Sinitson

উত্তর:


153

আপনি সর্বদা একটি চেষ্টা করতে পারেন ulimit -n 2048। এটি কেবলমাত্র আপনার বর্তমান শেলের সীমাটি পুনরায় সেট করবে এবং আপনি যে নম্বর নির্দিষ্ট করেছেন তা অবশ্যই হার্ড সীমা ছাড়িয়ে যাবে না

প্রতিটি অপারেটিং সিস্টেমের একটি কনফিগারেশন ফাইলে আলাদা হার্ড সীমা সেটআপ থাকে। উদাহরণস্বরূপ, সোলারিসে হার্ড ওপেন ফাইলের সীমাটি / etc / সিস্টেম থেকে বুটে সেট করা যেতে পারে।

set rlim_fd_max = 166384
set rlim_fd_cur = 8192

ওএস এক্স-তে, এই একই ডেটাটি /etc/sysctl.conf এ সেট করতে হবে।

kern.maxfilesperproc=166384
kern.maxfiles=8192

লিনাক্সের অধীনে, এই সেটিংসটি প্রায়শই /etc/security/limits.conf এ থাকে।

সীমা দুই ধরণের আছে:

  • নরম সীমাবদ্ধতা কেবল বর্তমানে প্রয়োগ করা সীমা
  • হার্ড সীমা সর্বাধিক মান চিহ্নিত করে যা একটি নরম সীমা নির্ধারণ করে অতিক্রম করা যায় না

নরম সীমাগুলি যে কোনও ব্যবহারকারীর দ্বারা সেট করা যেতে পারে যখন হার্ড সীমাগুলি কেবল রুট দ্বারা পরিবর্তনযোগ্য। সীমাবদ্ধতা একটি প্রক্রিয়া সম্পত্তি। যখন একটি শিশু প্রক্রিয়া তৈরি করা হয় তখন এগুলি উত্তরাধিকার সূত্রে প্রাপ্ত হয় সুতরাং থ্রি স্ক্রিপ্টগুলিতে সিস্টেম শুরু করার সময় সিস্টেম-প্রশস্ত সীমা নির্ধারণ করা উচিত এবং ব্যবহারকারী লগইন করার সময় ব্যবহারকারীর সীমা সেট করা উচিত উদাহরণস্বরূপ pam_limits ব্যবহার করে।

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


4
উইন্ডোতে কীভাবে এটি ব্যবহার করবেন তা আমাকে বলতে পারেন?
প্রীতম

@ হাইহয় আমি এটিকে পরিবর্তন করতে পারি 2048তবে 4500কেন নয়? এটি দেখুন
আলহালাল

@ গণেশকৃষ্ণান আপনি উল্লিখিত লিনাক্স ফাইলগুলিতে কী যুক্ত করবেন?
এভায়রাল সানজয়

@ প্রীতম উইন্ডোজ এর কোনও নেই ulimit। আপনি যা ব্যবহার করছেন তা অবশ্যই নির্দিষ্ট করতে হবে (যেমন ডাব্লুএসএল, সাইগউইন)।
মেলিবিয়াস

99

আপনি যদি লিনাক্স ব্যবহার করে থাকেন এবং অনুমতি ত্রুটিটি পেয়ে থাকেন তবে আপনাকে /etc/limits.confবা /etc/security/limits.confফাইলটিতে অনুমোদিত সীমাটি বাড়াতে হবে (যেখানে ফাইলটি আপনার নির্দিষ্ট লিনাক্স বিতরণের উপর নির্ভর করে)।

উদাহরণস্বরূপ, মেশিনে থাকা যে কোনও ব্যক্তিকে তাদের খোলা ফাইলগুলির সংখ্যা 10000 পর্যন্ত বাড়িয়ে দেওয়ার জন্য limits.confফাইলটিতে লাইন যুক্ত করুন।

* hard nofile 10000

তারপরে লগআউট এবং আপনার সিস্টেমে পুনরায় প্রবেশ করুন এবং আপনার এটি করতে সক্ষম হওয়া উচিত:

ulimit -n 10000

অনুমতি ত্রুটি ছাড়া।


6
দ্রষ্টব্য: ওয়াইল্ডকার্ড ব্যবহারকারীর জন্য প্রযোজ্য নয়root । আপনি সীমাটি root hard nofile 10000সামঞ্জস্য করতে চান কিনা আপনাকে নির্দিষ্ট করতে হবে root
জোশুয়া পিন্টার

1
@ জোশপিন্টার হা হা, আমি কীভাবে পরিবর্তন করতে পারি ulimitএবং প্রতিটি কীভাবে টিউটোরিয়ালটি পেরেছি এবং শেষ পর্যন্ত আমি মূল হিসাবে লগইন করেছি তা সম্পর্কে প্রতিটি টিউটোরিয়াল দিয়ে গত the ঘন্টা বা তার পরে ব্যয় করেছি। এজন্য আমি 1024 টি দেখতে পেয়েছি ulimit -a। আমি ওয়াইল্ড কেয়ার পরিবর্তন করেছি এবং একটি *অভ্যন্তর যুক্ত করেছি limits.conf। এখনই সব ঠিক আছে, (এসএমএস কী ব্যবহার করে চিন্তা করবেন না: পি) - আপনাকে ধন্যবাদ !!!
নিকক নিউম্যান

1
@ নাইক্কিউম্যান আমাকে খুশি যে আপনি এটি সম্পর্কে হাসছেন! এটি একজন প্রোগ্রামার / সিসপ্স ব্যক্তি হিসাবে ভাল বৈশিষ্ট্য। আমি একই কাজ করেছি এবং এতটা আনন্দময় ছিলাম না। খুশি এটা সাহায্য! :)
জোশুয়া পিন্টার

SUPLEMENT: আপনি খুঁজে পেতে পারেন এই দির কনফিগ: /etc/security/limits.d/
ওয়াল্ডেমার ওসিসিস্কি

2
আমি প্রথমবারের জন্য /etc/security/limits.conf খুলেছি এবং লক্ষ্য করেছি যে সেখানে সবকিছু মন্তব্য করা হয়েছে। "হার্ড নফিল" এর ডিফল্ট মানটি কী?
ka3ak 16

36

1) নিম্নলিখিত লাইন যোগ করুন /etc/security/limits.conf

webuser hard nofile 64000

তারপরে ওয়েব ব্যবহারকারী হিসাবে লগইন করুন

su - webuser

2) ওয়েব ব্যবহারকারীর জন্য নিম্নলিখিত দুটি ফাইল সম্পাদনা করুন

পরিশেষে যোগ .bashrc এবং .bash_profile চালিয়ে ফাইল

echo "ulimit -n 64000" >> .bashrc ; echo "ulimit -n 64000" >> .bash_profile

3) লগ আউট করুন, তারপরে আবার লগ ইন করুন এবং পরিবর্তনগুলি সঠিকভাবে করা হয়েছে তা যাচাই করুন:

$ ulimit -a | grep open
open files                      (-n) 64000

এটি এবং তাদের গর্জন, গর্জন গম্ভীর।


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

দেখে মনে হচ্ছে আপনি একটি অতিরিক্ত পদক্ষেপ পুনরাবৃত্তি করছেন। সীমাবদ্ধতা একা নির্ধারণ করা প্রোফাইল হিসাবে একই কাজ করবে তবে সমস্ত সেশন জুড়ে।
এডি

6

যদি আপনার কিছু পরিষেবা উলিমিটগুলিতে ঝাঁকিয়ে পড়ে থাকে তবে কখনও কখনও পরিষেবার আদেশ-স্ক্রিপ্টে উপযুক্ত কমান্ডগুলি দেওয়া আরও সহজ। উদাহরণস্বরূপ, যখন অ্যাপাচি রিপোর্ট করছে

[সতর্কতা] (১১) রিসোর্স অস্থায়ীভাবে অনুপলব্ধ: apr_thread_create: কর্মী থ্রেড তৈরি করতে অক্ষম

করা চেষ্টাসব ulimit -s unlimitedমধ্যে /etc/init.d/httpd। এটির জন্য সার্ভার পুনরায় বুট করার দরকার নেই।

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