यह सामग्री Qiita से स्थानांतरित की गई है।
जब nginx जैसी सेवाओं के लिए Max open files को बढ़ाने की आवश्यकता होती है।
CentOS7 से पहले systemd नहीं था, इसलिए हम limits.conf को संशोधित करते थे, लेकिन systemd के साथ इसे और अधिक सरलता से संभाला जा सकता है।
मान लेते हैं कि हमें nginx में समस्या का सामना करना पड़ा है।
वर्तमान स्थिति की जाँच करें
# grep "^Max open files" /proc/`cat /var/run/nginx.pid `/limits
Max open files 1024 4096 files
वर्तमान में, हार्ड लिमिट 4096 से अधिक नहीं है, जिससे एक प्रोसेस एक समय में फ़ाइल खोल नहीं सकता। worker_connections की ट्यूनिंग या कैश जैसी स्थितियों में, nginx को कई फ़ाइलें संभालने की आवश्यकता होने पर यह कम पड़ जाता है।
सेटिंग्स में बदलाव करें
# mkdir /etc/systemd/system/nginx.service.d
# vi /etc/systemd/system/nginx.service.d/limits.conf
[Service]
LimitNOFILE=65536
सेटिंग्स को लागू करें
- systemd को संशोधनों को पढ़ाने के लिए
# systemctl daemon-reload
- nginx को पुनः प्रारंभ करें और प्रक्रिया को फिर से चालू करें
# systemctl restart nginx
बदलाव के बाद की जाँच करें
# grep "^Max open files" /proc/`cat /var/run/nginx.pid `/limits
Max open files 65536 65536 file
सफलतापूर्वक Max open files को बढ़ाया गया।
systemd के माध्यम से नहीं होने पर
systemd के माध्यम से ही open files को बढ़ाया जाएगा, इसलिए यदि आप nginx -t जैसे आदेश सीधे चलाते हैं, तो Max open files बढ़ाया नहीं जाएगा, इसका ध्यान रखें।
# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: [warn] 4096 worker_connections exceed open file resource limit: 1024
nginx: configuration file /etc/nginx/nginx.conf test is successful