Centos : Extend LIMIT to fs

Some programs like Apache and MySQL require a higher number of file descriptors.
This is how you can increase that limit for all users in CentOS 7
Note: Commands require root access

  1. Find the default limit – check the open files line – it will be 1024
    sudo ulimit -a
  2. To increase edit nano /etc/sysctl.conf add the below line, save and exit
    fs.file-max = 100000
  3. We also need to increase hard and soft limits
    Edit /etc/security/limits.conf add the below lines before the #End, save and exit
    * soft nproc 65535
     * hard nproc 65535
     * soft nofile 65535
     * hard nofile 65535
  4. Next, run the command
    sudo sysctl -p
  5. for MySQL, edit /usr/lib/systemd/system/mysqld.service  and add the below 2 lines at the end, save and exit
    LimitNOFILE=65535
     LimitNPROC=65535
  6. then increase the table_open_cache and open_files_limit in my.cnf
    # reload systemctl
     sudo systemctl daemon-reload
  7. if you modified MySQL config, restart MySQL and check values for table_open_cache and open_files_limit
    systemctl restart mysqld.service
  8. run the below command to check the open files limit – change user based on requirement
    output should say: open files (-n) 65535
    # for mysql
     su - mysql -c 'ulimit -aHS' -s '/bin/bash'
    
    # for apache
     su - apache -c 'ulimit -aHS' -s '/bin/bash