How to set ulimits for a service starting at boot?
Solution 1:
$ echo "* hard nofile 102400" >> /etc/security/limits.conf
$ echo "* soft nofile 102400" >> /etc/security/limits.conf
$ sysctl -w fs.file-max=102400
$ sysctl -p
The 4 steps can change your system's limits immediately, and can still work after your reboot. You can change the number "102400" to the number of max open-file in your linux system as you want. and
$ sysctl -p
to load in sysctl settings from the file specified or /etc/sysctl.conf if none given.
Solution 2:
/etc/sysctl.conf should be able to set the ulimits items. I've not been able to test this well but survey says you should be able to stop after it's set in sysctl.conf.
I've found various topics that show it's still a problem though and my team and I have discussed some options around this we have found two potential workarounds.
Option 1: Most rhel initscripts source /etc/init.d/functions, you could change the ulimit settings there
Option 2: init claims that /etc/initscript is sourced everytime before init spawns whatever see: http://linux.die.net/man/5/initscript. Interestingly enough they say its where people can set ulimit =)