এনগিনেক্স সহ প্রচুর খোলার ফাইল সীমা বাড়িয়েছে বলে মনে হচ্ছে না


22

সার্ভারটি হ'ল উবুন্টু 13.04 (জিএনইউ / লিনাক্স 3.9.3-x86_64-লিনোড 33 x86_64)।

এনজিনেক্স হ'ল এনজিনেক্স / ১.২..6।

আমি এখন বেশ কয়েক ঘন্টা ধরে এটি নিয়ে কাজ করছি, তাই আমি যা পাচ্ছি তা এখানে এবং আমি যা করেছি তা এখানে।

tail -f /usr/local/nginx/logs/error.log
2013/06/18 21:35:03 [crit] 3427#0: accept4() failed (24: Too many open files)
2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files)
2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files)
2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files)
2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files)
2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files)
2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files)
2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files)
2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files)
2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files)
2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files)
2013/06/18 21:35:04 [crit] 3427#0: accept4() failed (24: Too many open files)
2013/06/18 21:35:05 [crit] 3426#0: accept4() failed (24: Too many open files)

Nginx চলমান:

geuis@localhost:~$ ps aux | grep nginx
root      3422  0.0  0.0  39292   380 ?        Ss   21:30   0:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody    3423  3.7 18.8 238128 190848 ?       S    21:30   0:13 nginx: worker process      
nobody    3424  3.8 19.0 236972 192336 ?       S    21:30   0:13 nginx: worker process      
nobody    3426  3.6 19.0 235492 192192 ?       S    21:30   0:13 nginx: worker process      
nobody    3427  3.7 19.0 236228 192432 ?       S    21:30   0:13 nginx: worker process      
nobody    3428  0.0  0.0  39444   468 ?        S    21:30   0:00 nginx: cache manager process

/Etc/security/limits.conf (ফাইলের শেষে থেকে সেটিংস) নরম / শক্ত সীমাবদ্ধকরণ

root soft  nofile 65536
root hard  nofile 65536

www-data soft nofile 65536
www-data hard nofile 65536

nobody soft nofile 65536
nobody hard nofile 65536

সর্বোচ্চ ফাইল পড়া

cat /proc/sys/fs/file-max
500000

এবং /etc/pam.d/common-session এ:

session required pam_limits.so

এটি যুক্ত হয়েছে এবং সার্ভারটি ভাল পরিমাপের জন্য পুনরায় শুরু হয়েছে, এনজিনেক্সের জন্য আমি প্যারেন্ট প্রসেসের পিআইডি পেয়ে নরম / শক্ত সীমাটি গণনা করি এবং:

cat /proc/<PID>/limits
Limit                     Soft Limit           Hard Limit           Units     
Max open files            1024                 4096                 files     

অভিভাবক প্রক্রিয়াটি 'রুট' হিসাবে চালিত হয় এবং 4 জন শ্রমিক 'কেউ নয়' হিসাবে চালায়।

root      2765  0.0  0.0  39292   388 ?        Ss   00:03   0:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody    2766  3.3 17.8 235336 180564 ?       S    00:03   0:21 nginx: worker process      
nobody    2767  3.3 17.9 235432 181776 ?       S    00:03   0:21 nginx: worker process      
nobody    2769  3.4 17.9 236096 181524 ?       S    00:03   0:21 nginx: worker process      
nobody    2770  3.3 18.3 235288 185456 ?       S    00:03   0:21 nginx: worker process      
nobody    2771  0.0  0.0  39444   684 ?        S    00:03   0:00 nginx: cache manager process

আমি কীভাবে করব এবং গুগল থেকে পেতে সক্ষম হয়েছি সে সম্পর্কে আমি চেষ্টা করেছি। Nginx বাড়ানোর জন্য আমি ফাইলের সীমাটি পেতে পারি না

সহায়তার প্রয়োজন?

উত্তর:


32

আপনার এনজিনেক্সে নিম্নলিখিত লাইনটি যুক্ত করুন এবং প্রক্রিয়াটি পুনরায় চালু করুন:

worker_rlimit_nofile 30000;

এটি শ্রমিকদের আরও বেশি ফাইল আনতে সহায়তা করবে। তারপরে আপনি যাচাই করতে পারবেন:

su - nobody
ulimit -Hn
ulimit -Sn

এটিতে নতুন শক্ত / নরম সীমা আউটপুট করা উচিত।

উল্লেখ


6
যদি আপনি কেবল worker_rlimit_nofileuWSGI সেটিংস পরিবর্তন করেন এবং সিস্টেম সীমাটি না (যা আমার জন্য কাজ করেছিল), আপনি এটি মাধ্যমে যাচাই করতে পারবেন না ulimit। পরিবর্তে, আপনি সরাসরি তাকান উচিত /proc/<pid of worker>/limits
জান ফ্যাব্রি

আমি মনে করি যে ব্যবহারকারীর (কেউ / www-ডেটা) লগআউট করে ফিরে আসতে হবে back অর্থাত্। সার্ভারটি পুনরায় চালু করুন। আমার জন্য ulimit দেখায় যে এটি বৃদ্ধি পেয়েছে, তবে বিড়াল / প্রোক / {পিড} / সীমা অনুসারে প্রক্রিয়াটি এখনও সীমাবদ্ধ
ফেলিক্স

@ ফেলিক্স ওপিতে উল্লেখ করা হয়েছে যে তারা ইতিমধ্যে সার্ভারটি পুনরায় চালু করেছে, তবে হ্যাঁ, এটি প্রয়োজন।
নাথান সি

3

উবুন্টুতে, /etc/pam.d/su সম্পাদনা করুন লাইন সেশনটি পাম_লিটস.ও যুক্ত বা সংশোধন করুন

এছাড়াও, /etc/security/limits.conf এ নিশ্চিত করুন যে আপনার কাছে অক্ষরগুলির মধ্যে TABS রয়েছে এবং ফাঁকা জায়গা নয়।


1

নিশ্চিত হয়ে নিন যে আপনি এই ফাইলগুলি সম্পাদনার পরে নিম্নলিখিত কমান্ডটি চালাচ্ছেন

sysctl -p

তারপরে nginx পুনরায় চালু করুন


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