温馨提示×

centos ulimit有什么用

小樊
51
2026-10-14 20:42:27
栏目: 智能运维

在 CentOS(以及其他 Linux 发行版)中,ulimit 用于限制单个用户或进程可以使用的系统资源,防止某个程序或用户占用过多资源,影响系统稳定性。

下面从「作用、常见限制项、使用方式、注意事项」几个方面说明。


一、ulimit 有什么用?

主要作用:

  1. 防止资源耗尽
    • 避免某个进程占用太多内存、文件句柄、CPU 等
  2. 提高系统稳定性
    • 防止单个用户拖垮整个服务器
  3. 安全与多租户隔离
    • 限制普通用户资源使用上限

二、常见的 ulimit 限制项

常用参数(ulimit -a 可查看):

参数 含义 说明
-n 文件描述符(fd) 打开文件 / socket 数量
-u 最大进程数 用户能创建的进程数
-m 最大内存 常不生效(被 cgroup 替代)
-v 虚拟内存
-c core 文件大小 程序崩溃时是否生成 core
-s 栈大小 线程栈
-t CPU 时间 秒
-f 文件大小 单文件最大

示例:

ulimit -n

查看当前用户最多能打开多少文件。


三、ulimit 的使用方式

1. 查看当前限制

ulimit -a

2. 临时修改(仅当前 shell 生效)

ulimit -n 65535
ulimit -u 4096

⚠️ 重启或新开终端后失效


3. 永久修改(CentOS 常用方式)

方法一:/etc/security/limits.conf

vim /etc/security/limits.conf

示例:

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

含义:

  • soft:警告值
  • hard:硬限制
  • *:所有用户(也可写用户名)

需要重新登录生效


方法二:systemd 服务(CentOS 7+)

如果是 systemd 启动的服务:

vim /etc/systemd/system/xxx.service
[Service]
LimitNOFILE=65535
LimitNPROC=4096

然后:

systemctl daemon-reload
systemctl restart xxx

四、常见使用场景

1. 高并发服务(Nginx / Redis / Java)

ulimit -n 65535

否则容易报:

Too many open files

2. 防止 fork 炸弹

限制用户进程数:

* hard nproc 1000

3. 调试程序

允许生成 core 文件:

ulimit -c unlimited

五、注意事项

  • ulimit 只对当前用户会话或进程有效
  • 对 root 的限制也可能被突破(hard limit)
  • Docker / K8s 中通常由 cgroup 控制
  • CentOS 8 以后更推荐 systemd 限制

如果你愿意,我可以:

  • 帮你查 CentOS 7 / 8 的具体配置示例
  • 解释 soft 和 hard 的区别
  • 根据你的 服务类型(Nginx / Java / MySQL)给建议值

0 踩