Before I get into details here is the bottom line. If you start
MySQL on Solaris as a non-root (ie, mysql) user and for some
reason you need to adjust the file descriptor resource limit for
the parent shell, never use 'ulimit -n'. This will set both the
soft and hard limit and may cause MySQL to adjust the
max_connections and table_open_cache configuration variables upon
next startup.
Use either:
ulimit -S -n 1024
or something like:
prctl -n process.max-file-descriptor -t basic -v 1024 -r -i process $$
The Details
The default 'basic' privilege value for the resource control process.max-file-descriptor is 256. This control represents the soft ulimit for file descriptors per process. The default 'privileged' privilege is set to 65535, which represents the hard ulimit. A non-root user can adjust the soft limit down or up to the hard limit. Unless it has PRIV_SYS_RESOURCE a …
[Read more]