温馨提示×

ubuntu ulimit能改多大

小樊
40
2026-10-14 11:09:09
栏目: 智能运维

在 Ubuntu(以及一般 Linux)里,ulimit 能改到多大,不是由一个固定值决定的,而是由以下几层限制共同决定的:


一、ulimit 的限制层级

1. 当前 shell 的软限制(soft limit)

  • 用户当前会话能直接改到的上限
  • 只能 调小或调到硬限制以内
ulimit -a

2. 硬限制(hard limit)

  • 普通用户不能超过
  • 只有 root 能提高
ulimit -Hn   # 硬限制
ulimit -Sn   # 软限制

3. 系统级上限(kernel 限制)

即使 root 也不能无限改,受内核参数限制。


二、常见资源项的“理论上限”

1. 文件描述符(open files,最常见)

ulimit -n
  • 默认:1024
  • 常见服务器:65535
  • 理论最大值:
    • 32 位系统:~1024 × 1024
    • 64 位系统:受 fs.file-max 限制

查看系统总上限:

cat /proc/sys/fs/file-max

示例(64 位服务器常见):

fs.file-max = 9223372036854775807(理论)
实际常用:几百万

✅ 实际建议上限:

  • 单进程:100万 以内通常没问题
  • 系统总:fs.file-max 决定

2. 进程数(nproc)

ulimit -u
  • 默认:受 /etc/security/limits.conf 控制
  • 上限由:
cat /proc/sys/kernel/pid_max

常见:

  • 32 位:32768
  • 64 位:4,194,304(可改)

3. 内存相关

  • 栈大小:ulimit -s
  • 虚拟内存:ulimit -v
  • 这些不能超过物理 + swap
  • root 也不能超过内核限制

三、永久修改 ulimit(Ubuntu)

1. 修改 /etc/security/limits.conf

* soft nofile 65535
* hard nofile 65535

2. 系统级

/etc/sysctl.conf
fs.file-max = 1000000
sysctl -p

3. systemd 服务

还要改:

[Service]
LimitNOFILE=65535

四、总结一句话

ulimit 能改多大 = 当前硬限制 ≤ 系统内核参数 ≤ 物理资源

如果你是问某个具体场景(比如:

  • Nginx
  • MySQL
  • Elasticsearch
  • Docker
  • 高并发服务)

可以告诉我,我直接给你可落地的数值和配置。

0 踩