温馨提示×

ulimit在CentOS中的配置技巧

小樊
54
2025-07-26 21:44:30
栏目: 智能运维

在CentOS系统中,ulimit命令用于控制shell进程及其子进程可以使用的系统资源。以下是ulimit在CentOS中的配置技巧:

临时设置ulimit

  • 打开终端。
  • 查看当前的ulimit设置:
    ulimit -a
    
  • 设置特定资源的限制:
    • 最大文件大小(以KB为单位):
      ulimit -f <size_in_kb>
      
    • 最大进程数:
      ulimit -u <number_of_processes>
      
    • 打开文件的最大数量:
      ulimit -n <number_of_open_files>
      
    • CPU时间(以秒为单位):
      ulimit -t <seconds>
      
    • 内存使用量(以KB为单位):
      ulimit -v <size_in_kb>
      
    • 堆栈大小(以KB为单位):
      ulimit -s <size_in_kb>
      
    例如,设置最大打开文件数为4096:
    ulimit -n 4096
    

永久设置ulimit

临时设置只对当前shell会话有效。要永久设置ulimit,需要修改系统配置文件。

  • 编辑/etc/security/limits.conf文件:
    sudo vi /etc/security/limits.conf
    
  • 添加或修改以下行:
    <username> soft <resource> <limit>
    <username> hard <resource> <limit>
    
    例如,为username用户设置最大打开文件数为4096:
    username soft nofile 4096
    username hard nofile 4096
    
  • 保存并退出编辑器。
  • 重新登录以使更改生效。

针对特定服务的设置

如果你需要为特定的服务(如Apache、Nginx等)设置ulimit,可以在服务的启动脚本中添加ulimit命令。

例如,对于Apache:

  • 编辑/etc/httpd/conf/httpd.conf文件:
    sudo vi /etc/httpd/conf/httpd.conf
    
  • 在文件末尾添加:
    <IfModule prefork.c>
        StartServers       5
        MinSpareServers    5
        MaxSpareServers   10
        MaxClients        150
        MaxRequestsPerChild  400
    </IfModule>
    <IfModule worker.c>
        StartServers         2
        MinSpareThreads     25
        MaxSpareThreads     75 
        ThreadLimit          64
        ThreadsPerChild      25
        MaxClientsPerChild   100
    </IfModule>
    # 设置 ulimit
    ulimit -n 4096
    
  • 保存并退出编辑器,然后重启服务:
    sudo systemctl restart httpd
    

优先级

根据CentOS版本不同,优先级也不同。以下是CentOS 6和CentOS 7的优先级比较:

  • CentOS 6

    1. 最后一次ulimit命令设置
    2. /etc/security/limits.d/
    3. /etc/security/limits.conf
    4. /etc/systemd/system.conf/etc/systemd/user.conf
  • CentOS 7

    1. 最后一次ulimit命令设置
    2. /etc/security/limits.conf
    3. /etc/security/limits.d/
    4. /etc/systemd/system.conf/etc/systemd/user.conf

通过以上步骤,你可以在CentOS系统中灵活地设置ulimit,以满足不同应用和服务的需求。

0