How can I increase open files limit for all processes?

  • I can use ulimit but I think that only affects my shell session. I want the limit increased for all processes. This is on Red Hat.

    Which version of Red Hat, by the way? RHEL5?

  • Justin's answer tells you how to raise the number of open files available total to the whole system. But I think you're asking how to raise the per-user limit, globally. The answer to that is to add the following lines to /etc/security/limits.conf:

    *               soft    nofile            2048
    *               hard    nofile            2048
    

    (Where the * means all users.)

    There's some summary documentation in that file itself and in man limits.conf. This is implemented via the pam_limits.so module which is called for various services configured in /etc/pam.d/.

    And, I have to admit, I have no idea where that 1024 default comes from. And believe me, I looked. I even tried without the pam_limits module configured, and it's still there. It must be hard-coded in somewhere, but I'm not exactly sure where.

    Hmm... I set this properly. Exit SSH and come back in and my soft limit is still set to 1024. Is there something I'm missing to make this "active"? Thanks.

    @mattdm - It is worth mention that on some Linux distributions the mentioned file will be under: /etc/limits.conf

  • According to the article Linux Increase The Maximum Number Of Open Files / File Descriptors (FD), you can increase the open files limit by adding an entry to /etc/sysctl.conf.

    Append a config directive as follows:

    fs.file-max = 100000
    

    Then save and close the file. Users need to log out and log back in again to changes take effect or they can just type the following command:

    # sysctl -p
    

    You can also verify your settings with the command:

    # cat /proc/sys/fs/file-max
    

    I'm skeptical about needing to log out and in again for this particular setting, which is system-wide. (That goes for pretty much everything in sysctl...)

  • Increase max number of ulimit open file in Linux

    1.Step : open the sysctl.conf and add this line fs.file-max = 65536

    $ vi /etc/sysctl.conf
    

    add new line and

    fs.file-max = 65536
    

    save and exit.

    2.Step:

    $ vi /etc/security/limits.conf
    

    and add below the mentioned

    * soft     nproc          65535
    * hard     nproc          65535
    * soft     nofile         65535
    * hard     nofile         65535
    

    save and exit check max open file ulimit

    # ulimit -a
    
    ....
    open files                      (-n) 65535
    
  • But if you're trying to increase the max number of open files of a service like MariaDB or something else (using systemd) you have to do directly in file .service

    /lib/systemd/system/<servicename>.service
    

    Will be something like this:

    [Unit]
    Description=Some Daemon
    After=syslog.target network.target
    
    [Service]
    Type=notify
    LimitNOFILE=49152
    ExecStart=/usr/sbin/somedaemon
    
    [Install]
    WantedBy=multi-user.target
    

    The completely answer is here: Increasing nproc for processes launched by systemd on CentOS 7

    This needs to be upvoted, as the ubiquity of `systemd` along with its ongoing changes are increasing across the Linux ecosystem. Although, I would suggest to edit the answer to `cp -r /lib/systemd/system/mariadb.service /etc/systemd/system/` and make the changes to that file, rather than the system-wide service file that's provided by the package.

  • SUPLEMENT:

    You may find config in different place: /etc/security/limits.d/*.conf

    I had to modify it. It didn't work without it. Format is the same as for limits.conf

    I also had to update this file for the setting to fully take on our CentOS servers.

License under CC-BY-SA with attribution


Content dated before 6/26/2020 9:53 AM