On my CentOS 7, I use cat /proc/<pid>/limits
to see the actuel limit set. I got confirmation that this method is totally accurate here because I'm using it on MySQL, which can't dump a specific database with >8000 tables in it. If, by using prlimit
I set it to 10000, the dump finishes successfully.
Now, I'd like to avoid using prlimit, so I configured /etc/security/limits.conf file to match my needs, and if I run a bash with the according user (mysql), I can see the correct limit value configure when running ulimit -a
.
The problem is that the process mysqld, ran by mysql user, is still set to a default value (here 1024), which leads to fail when dumping the DB. Only solution I have is to run prlimit on runtime but I'd like to undertand what is missing so my processes respect limits configuration at startup.
Eventually found the issue : The limits are handled by Systemd, I had to create file /etc/systemd/system/mariadb.service.d/limits.conf with content :
So, main thing to keep in mind : systemd doesn't care at all about /etc/security/limits* files.