在高并发服务器开发中,系统资源限制往往成为性能瓶颈的"隐形杀手"。一个看似简单的accept()或socket()调用,可能因为触及系统限制而失败。理解 Linux 系统的关键资源上限,是构建高可用、高并发系统的前提。
本文将深入分析四个核心系统资源的理论与实际限制,并提供查看、调整的方法。
一、文件描述符(File Descriptor)最大值
📌 理论上限
在 Linux 中,文件描述符本质上是进程文件描述符表的一个索引。其理论上限由unsigned int的位数决定:
- 32 位系统:最大 FD = 2^31 - 1 =2,147,483,647(约 21 亿)
- 64 位系统:理论上无上限,实际受限于系统内存
📋 实际限制层次
Linux 采用多层限制机制:
1.系统级限制(影响所有进程)
# 查看系统最大 FD 数量 cat /proc/sys/fs/file-max # 示例输出:9223372036854775807(接近 2^63) # 查看当前已分配的 FD 数量 cat /proc/sys/fs/file-nr # 输出:已分配数量 已使用数量 最大限制