Linux系统
Linux物理层
LSI Raid 阵列日常操作
MegaCLI基本使用指南
重要参数含义说明
Raid的增删改
Linux系统层
Linux 系统启动过程流程
timedatectl命令时间时区操作
sar命令用法
Linux 性能调优工具9张图
Linux 特殊权限说明
Linux系统三级等保整改脚本
CentOS 7 停止维护(EOL)后的仓库变动
Linux误删紧急救援
Linux下高效安全地批量删除文件的方法与实践
Linux网卡重命名实践指南
limits.conf 配置规范说明
Linux查看主板内存槽与内存信息
安装麒麟Kylin-v10 Arm64版本到阿里云
CentOS7 多网卡单网关利用策略路由实现源进源出
初始化Linux数据盘(parted)
解决CentOS7下yum命令的异常
EXSI虚机mount出现‘unknown filesystem type 'LVM2_member'’
Linux虚机网卡单队列导致压测CPU无法满载的问题
Linux网络性能优化建议
Linux 修改系统语言环境
LInux文件系统中的默认保留空间 Ext4 vs. XFS
Linux CPU占用率原理与精确度分析
中标麒麟安装Nvidia显卡驱动
Linux主机双网卡同网段同网关配置
Linux 服务层
编译Expat 2.6.2的rpm包并升级
Linux主机挂载共享samba出现普通用户没有写权限的问题
编译OpenSSH 9.3p1的rpm包并升级
CentOS 7.x通过rpm升级OpenSSH到 8.5p1版本
Linux日志切割Logrotate原理和配置详解
systemd下配置sshd监听端口
编译NTP 4.2.8p17的rpm包并升级
编译OpenSSL 1.1.1w的rpm包并升级
linux命令集
磁盘工具集
Linux du 命令
fpsync数据迁移工具
字符处理集
Linux sed 命令
Linux命令输出重定向到变量
使用 paste 合并文件内容
常用调试指令集
编译cmake 3.5.2版本
网络工具集
MTR探测主机间丢包
Linux性能测试
甲骨文主机测试
本文档使用 MrDoc 发布
-
+
首页
limits.conf 配置规范说明
## 一、定位与作用边界 `/etc/security/limits.conf` 是 Linux 系统中用于配置**用户级资源限制(User Resource Limits)**的核心配置文件,其主要作用是: * 在**用户会话建立阶段**,为用户进程设置资源使用上限 * 防止单个用户或进程过度消耗系统资源 * 为高并发、高文件句柄等业务场景提供必要的资源保障  需要明确的是: > `limits.conf` 并非性能调优的“无限放开”工具,而是**在内核允许范围内,为用户设置可控的资源边界**。 ## 二、生效机制概述 `limits.conf` 由 PAM 框架中的 `pam_limits.so` 模块加载,其生效时机主要包括: * 本地登录(`login`) * SSH 登录(`sshd`) * 用户切换(`su` / `sudo`) * 图形化会话初始化 * 部分 systemd 用户会话 **关键特性:** * 资源限制在会话创建时一次性设置 * 若任意一项限制设置失败,会话可能被直接拒绝 * 不存在自动降级或回退机制 因此,`limits.conf` 的配置应始终以**可被内核成功接受**为前提。 --- ## 三、语法与含义 典型配置格式如下: ```conf <domain> <type> <item> <value> ``` ### 3.1 domain(作用对象) * 用户名:仅对指定用户生效 * `@group`:对用户组生效 * `*`:对所有用户生效(需谨慎使用) ### 3.2 type(限制类型) * `soft`:软限制,可被用户在会话内降低或临时提升(不超过 hard) * `hard`:硬限制,上限约束,用户无法突破 ### 3.3 item(限制项) 常见资源项包括: | 项目 | 含义 | | --------- | -------------- | | `nofile` | 最大文件描述符数 | | `nproc` | 最大进程/线程数 | | `stack` | 线程栈大小 | | `memlock` | 可锁定内存 | | `core` | core dump 文件大小 | --- ## 四、典型配置示例与使用场景 ### 4.1 文件描述符限制(高并发场景) ```conf appuser soft nofile 65535 appuser hard nofile 65535 ``` 适用于: * 高并发网络服务 * 数据库连接密集型应用 * 长连接场景 --- ### 4.2 进程数限制(多线程程序) ```conf @app soft nproc 65535 @app hard nproc 65535 ``` 适用于: * 多 worker / 多线程服务 * 批量任务调度系统 --- ### 4.3 core 文件控制(调试用途) ```conf appuser soft core unlimited appuser hard core unlimited ``` 仅建议在: * 调试 * 问题定位阶段使用 生产环境需配合磁盘容量和清理策略。 --- ## 五、取值范围与上限 ### 5.1 limits.conf 并非“想设多大就多大” 所有限制项均受内核参数约束,例如: * `nofile` 受 `fs.nr_open` 限制, 可通过 `/proc/sys/fs/nr_open` 确认 * `nproc` 受 `kernel.pid_max` 限制, 可通过 `/proc/sys/kernel/pid_max` 确认 * `stack`、`memlock` 受 `RLIMIT_*` 机制约束, 可分别通过 `ulimit -s`(栈大小) 和 `ulimit -l`(可锁定内存大小) 确认 配置值必须满足: > **limits.conf ≤ `内核允许的最大值`** 否则会导致限制设置失败。 --- ### 5.2 推荐的工程化取值区间 在大多数通用 Linux 发行版和生产环境中,以下取值具有良好的工程实践基础: | 项目 | 推荐上限 | 常见系统默认上限说明 | | --------- | ------ | ---------------------------------------------- | | `nofile` | 65535 | 由 `fs.nr_open` 控制,常见默认值为 1048576 | | `nproc` | 65535 | 由 `kernel.pid_max` 及 PAM 默认策略控制,常见默认值约为 131072 | | `stack` | 使用系统默认 | 通常为 8192 KB(8 MB),由 `RLIMIT_STACK` 控制 | | `memlock` | 按需配置 | 默认通常较小,用于限制可锁定内存 | | `core` | 默认或按需 | 默认多为 0,调试场景可设置为 unlimited | 在具备明确业务需求、并同步调整内核参数的前提下,**将 `nofile` 或 `nproc` 提升至十万级以内是可行的**。 例如: > 将上限设置为 655350 属于**可讨论、可评估的工程范围** > 而将其设置为 6553500 则明显超出常规内核与业务模型的合理区间 --- ### 5.3 如确有突破默认系统上限的需要, 可先行修改默认系统上限,再修改对应 `limit.conf` 配置 ``` sysctl -w fs.nr_open=1048576 sysctl -w fs.file-max=2097152 sysctl -w kernel.pid_max=4194304 ``` 并写入 `/etc/sysctl.conf` ## 六、关于“全局配置”的使用建议 不建议对所有用户使用统一限制: ```conf * soft nofile ... * hard nofile ... ``` 原因包括: * 影响 root 用户与系统服务 * 登录、用户切换对限制失败高度敏感 * 故障影响面难以控制 更推荐的方式是: * 明确业务用户或用户组 * 分业务类型设置不同资源边界 --- ## 七、systemd 环境的补充说明 在 systemd 管理的系统中: * `limits.conf` 对交互式登录用户生效 * 对 systemd 管理的服务进程并不完全生效 需额外配置: ```ini # /etc/systemd/system.conf DefaultLimitNOFILE=65535 DefaultLimitNPROC=65535 ``` 并执行: ```bash systemctl daemon-reexec ``` --- ## 八、结语 `/etc/security/limits.conf` 的核心价值在于**约束与保障并存**,其配置目标应始终围绕: * 明确作用对象 * 合理资源上限 * 符合内核能力 * 与实际业务模型匹配 在工程实践中,**可以将资源上限提升至合理的十万级以内**,但不应追求数量级式放大。 理性的限制配置,远比盲目“放大上限”更能保障系统的稳定性与可维护性。
Nathan
2026年1月9日 16:15
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文件
Docx文件
分享
链接
类型
密码
更新密码