使用 ulimit
命令可以优化 CentOS 系统的性能,主要通过调整进程的资源限制来实现。以下是具体的步骤和注意事项:
基本用法
ulimit
命令用于设置或报告用户进程资源限制。其基本语法如下:
ulimit [options] [limit]
-H
:设置硬资源限制。-S
:设置软资源限制。-a
:显示当前所有的资源限制。-c
:设置 core 文件的最大值。-d
:设置数据段的最大值。-f
:设置创建文件的最大值。-l
:设置内存锁定的最大值。-m
:设置最大内存使用量。-n
:设置打开文件描述符的最大值。-p
:设置管道缓冲区的最大值。-s
:设置堆栈的最大值。-t
:设置 CPU 使用时间的最大值。-u
:设置用户最多可运行的进程数。
永久修改 ulimit
要使 ulimit
设置永久生效,需要进行以下配置:
-
修改
/etc/security/limits.conf
文件:* soft nofile 65535 * hard nofile 65535 * soft nproc 65535 * hard nproc 65535
上述配置表示将所有用户的软限制和硬限制同时修改为 65535。
-
修改
/etc/pam.d/login
文件:session required pam_limits.so
这行配置表示在用户登录时使用
pam_limits.so
模块来管理limits.conf
文件中的限制。 -
修改
/etc/profile
或用户家目录下的.bashrc
文件:ulimit -u 65535 ulimit -n 65535
这两行命令会在用户登录时自动执行,从而应用之前设置的
ulimit
值。
针对 systemd 服务的特殊配置
在 CentOS 7 及以上版本中,由于引入了 systemd
,配置文件的作用域有所变化:
-
修改
/etc/systemd/system.conf
和/etc/systemd/user.conf
文件:在这两个文件中添加或修改以下配置:
DefaultLimitNOFILE=65535 DefaultLimitNPROC=65535
这些配置会影响通过
systemd
启动的服务。 -
创建或修改服务特定的配置文件:
例如,对于 Apache 服务,可以创建或修改
/etc/systemd/system/httpd.service.d/limits.conf
文件:[Service] LimitNOFILE=20000 LimitNPROC=20000
然后重新加载
systemd
配置并重启服务:systemctl daemon-reload systemctl restart httpd
验证配置
可以通过以下命令查看当前用户的资源限制:
ulimit -a
或者查看特定进程的资源限制:
cat /proc//limits
其中
是进程的 ID。
注意事项
-
优先级问题:在 CentOS 6 和 CentOS 7 中,配置文件的优先级不同。CentOS 7 中,
/etc/security/limits.conf
的优先级最高,接着是/etc/security/limits.d/
目录下的配置文件,最后是/etc/systemd/system.conf
和/etc/systemd/user.conf
。因此,在 CentOS 7 中,建议主要修改/etc/security/limits.conf
和/etc/systemd/system.conf
文件。 -
系统级限制:除了用户级的限制外,还需要注意系统级的限制,如
/proc/sys/fs/file-max
参数,该参数限制了系统允许的总文件句柄数。可以通过以下命令查看和修改:cat /proc/sys/fs/file-max echo 100000 > /proc/sys/fs/file-max
通过合理配置 ulimit
参数,可以有效提升 CentOS 系统的性能和资源管理能力。