লিনাক্স এবং এনজিনেক্সের সর্বাধিক ফাইল বর্ণনাকারী, এবং কর্মী_র্লিমিট_নোফাইলের জন্য সেরা মান বোঝা


10

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

  • ওএসের নিজস্ব মোট ফাইল বর্ণনাকারী সীমা রয়েছে (আমার সিস্টেমে, cat /proc/sys/fs/file-max"100678" আউটপুট দেয়)
  • প্রতিটি ব্যবহারকারীর নিজস্ব সীমাও থাকতে পারে (তবে আমার সিস্টেমে ulimitযে কোনও ব্যবহারকারীর আউটপুট হিসাবে " চলমান সীমাহীন" আরও বিশদ সহ নীচে আপডেট দেখুন )
  • এই ব্যক্তি যা বলেছিলেন তার ধারায় কয়েকটি লোক কিছু বলেছিল: 'দিকনির্দেশক কর্মী_প্রিমিট_নোফাইল "কয়টি" নির্দিষ্ট করে না, এটি অপারেটিং সিস্টেমের সীমা যা করে। দিকনির্দেশক কর্মী_রামিট_নোফাইল কেবলমাত্র এই সীমাটি যথেষ্ট পরিমাণে বাড়ানোর পক্ষে একটি দ্রুত এবং নোংরা উপায়টিকে অনুমতি দেয় '' সুতরাং আমি অনুমান করি যে এই ধারণাটি হ'ল কনফিগের পরিবর্তে এনগিনেক্স ওএস ব্যবহারকারীর জন্য সীমা নির্ধারণ করা "আরও ভাল"?

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

  • কেন শ্রমিক প্রতি সীমা ওএস সীমা চেয়ে কম হবে?
  • আমার সীমাটি এখন কীভাবে তা সন্ধান করব?

আপডেট : মূল এবং একটি সাধারণ ব্যবহারকারীর উভয়ের জন্যই "সীমাহীন" আউটপুট, বিউট ulimit -Hnএবং ulimit -Snউভয় আউটপুট 1024 lim

উত্তর:


10

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

প্রথমত, আপনার ফাইল বর্ণনাকারী কী ব্যবহার করছেন?

  1. প্রতিটি ক্লায়েন্টের সাথে সক্রিয় সংযোগ
  2. প্রক্সি_পাস ব্যবহার করছেন? এটি হোস্টের জন্য একটি সকেট খুলবে: এই অনুরোধগুলি হ্যান্ডল করে পোর্ট
  3. একটি স্থানীয় বন্দরে প্রক্সি_পাস ব্যবহার করছেন? আরেকটি উন্মুক্ত সকেট। (এই প্রক্রিয়ার মালিকের জন্য)
  4. স্ট্যাটিক ফাইলগুলি এনজিনেক্স দ্বারা পরিবেশন করা হচ্ছে

কেন শ্রমিক প্রতি সীমা ওএস সীমা চেয়ে কম হবে?

এটি ওএস দ্বারা নিয়ন্ত্রিত হয় কারণ মেশিনে কেবল কর্মী চলমান প্রক্রিয়া নয়। ব্যবহারকারীর জন্য এটি পরিবর্তন করতে nginx নীচে দেখুন। এটি খুব খারাপ হবে যদি আপনার কর্মীরা সমস্ত প্রক্রিয়াগুলিতে উপলব্ধ ফাইল বর্ণনাকারীদের সমস্ত ব্যবহার করেন, আপনার সীমা নির্ধারণ না করেন যাতে এটি সম্ভব হয়।

#/etc/sysctl.conf
#This sets the value you see when running cat  /proc/sys/fs/file-max
fs.file-max = 65536"


#/etc/security/limits.conf
#this sets the defaults for all users
* soft nofile 4096
* hard nofile 4096

#This overrides the default for user `usernamehere`
usernamehere soft nofile 10240
usernamehere hard nofile 10240

এই সুরক্ষা সীমা পরিবর্তনের পরে আমি বিশ্বাস করি যে এখনও ব্যবহারকারীর জন্য সফটলিমিট বাড়াতে হয়েছিল ulimit

আমার সীমাটি এখন কীভাবে তা সন্ধান করব?

ulimit -a আপনি এটি হিসাবে চালানো ব্যবহারকারীর সাথে সম্পর্কিত সমস্ত সীমা প্রদর্শন করবে।


1
ধন্যবাদ - এখন আমি ফাইল বর্ণনাকারীর সীমাটি সরিয়ে নিয়েছি, আমি সংযোগের বাইরে চলেছি। হতে পারে আপনি সে ক্ষেত্রে আমাকেও সাহায্য করতে পারেন :) সার্ভারসফল্ট
জন

1
CentOS / ফেডোরা ব্যবহারকারীদের জন্য নোট, যদি আপনি setsebool -P httpd_setrlimit 1সেলইনাক্স সক্ষম করে থাকেন তবে আপনাকে চালনা করতে হবে যাতে এনজিনেক্সের রিলিট সেট করার অনুমতি রয়েছে।
জারেট 21

2

উত্সটি সত্য বলে পরীক্ষা করতে হবে, তবে এটি মোটামুটি কম।

আমি ব্যবহার করেছি worker_rlimit_nofile 15000;এবং কোন সমস্যা ছিল না, আপনি নিরাপদে এটিকে বাড়িয়ে তুলতে পারেন, তবে ফাইল বর্ণনাকারীর বাইরে চলে যাওয়ার সম্ভাবনা হ্রাস হ্রাস।

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