I run my servers on CentOS using cPanel/WHM. When I first started running my own server, it did not take long for me to see how little I know about Linux. I had a funky problem with my MySQL dropping out after so much time. It seemed like the more people I had on my sites, the faster it would go down. But after I rebooted the server, it all started working fine again… For a while anyway.
I got to looking around to see if there is a error log for MySQL. And sure enough there is. By default, the error log is located at:
/var/lib/mysql/**HOSTNAME**.errThe **HOSTNAME** would be your server’s hostname, (if you do not know your hostname, simply use the command “hostname” and it will output your hostname)
To view the last 500 lines of your error log, simply use:
tail -500 /var/lib/mysql/**HOSTNAME**.errIn my error log, I began to see this:
130925 12:39:23 [ERROR] Error in accept: Too many open files 130925 12:43:39 [ERROR] Error in accept: Too many open files 130925 12:47:55 [ERROR] Error in accept: Too many open files 130925 12:52:11 [ERROR] Error in accept: Too many open files 130925 12:56:27 [ERROR] Error in accept: Too many open files 130925 13:00:43 [ERROR] Error in accept: Too many open files 130925 13:04:59 [ERROR] Error in accept: Too many open files 130925 13:09:15 [ERROR] Error in accept: Too many open files 130925 13:13:31 [ERROR] Error in accept: Too many open files 130925 13:17:47 [ERROR] Error in accept: Too many open files 130925 13:22:03 [ERROR] Error in accept: Too many open files 130925 13:26:19 [ERROR] Error in accept: Too many open files 130925 13:30:35 [ERROR] Error in accept: Too many open files
Did a little bit of googling, and discovered that by default, centOS has a hard limit of the amount of files that can be opened at a time, which causes MySQL to error out until you reboot the server. However, this can be fixed by running the doing the following:
nano /etc/sysctl.confAdd this line at the bottom of the config file:
fs.file-max = 100000
Save and close the file, then reboot the server.
After you rebbot your server, you will want to run the following command to verify that your settings was saved and correct:
sysctl fs.file-maxIf it reads 10000, then your server is now ready to handle MySQL!
Originally posted at https://moreabout.tech/mysql-too-many-files-open/