systemd में विशेष डेमन के लिए Max open files को बढ़ाना
सर्वर
Published: 2016-04-02

यह सामग्री 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