如何轻松调整CentOS ulimit内存限制,实现系统性能的优化?

更新于
2026-09-29 20:07:14
4阅读来源:SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

为何CentOS的ulimit内存限制是程序性能调整的关键

在CentOS服务器上。ulimit命令用于控制 shell 进程及其子进程的资源限制,特别是内存使用。很多管理员发现临时设置的内存限制只在当前会话有效导致重启后程序仍然出现 OOM问题;还有配置文件方法或语法错误验证设置是否生效不易等痛点。下面提供一套从痛点切入操作简便可验证 的完整方法。

1. 痛点:临时修改只在当前会话生效

*soft memlock unlimited*hard memlock unlimited*soft as unlimited*hard as unlimited*

如何轻松调整CentOS ulimit内存限制,实现系统性能的优化?

痛点描述: 在脚本或单次登录时使用 ulimit -v 4194304后关闭终端或重新登录即失效。若要让设置永久生效,必须把相应条目写入 /etc/security/limits.conf

2. 永久调整ulimit内存限制——编辑 /etc/security/limits.conf

步骤:

  1. 以 root 身份打开文件:

sudo vi /etc/security/limits.conf

  • 添加或修改限制行:
    • -soft memlock unlimited -hard memlock unlimited -soft as unlimited -hard as unlimited
    • -m 4194304 # 软限制对应 4 GB 虚拟内存 -v 4194304 # 硬限制对应 4 GB 虚拟内存 -n 65536 # 软文件打开数 -d unlimited # 软数据段大小 -s unlimited # 软栈大小 -c unlimited # 软中心大小 -f unlimited # 软最大文件大小 -r unlimited # 软实时调度优先级 -l unlimited # 软最大锁定内存数 -n unlimited # 软最大进程数 -u unlimited # 软最大使用者进程数 -a unlimited # 软最大符号表项数 -w unlimited # 软最大日志文件大小
    • : 每一行格式为 “使用者名 soft limit_type value” 或 “使用者名 hard limit_type value”。按理说,若想对所有使用者统一设置,可使用星号 * * soft memlock unlimited * * hard memlock unlimited * * soft as unlimited * * hard as unbounded*
    • : 按 。输入 :wq.
    • : 必须重新登录程序或执行 .bash_profile .bashrc .profile 或直接注销再登录。
    • \endul>

      检查新设置是否已生效——常见错误与正确做法

      常见错误:忘记重新登录、误将参数写成

      ulimit -m memory_limit_in_kbuliit -v virtual_memory_limit_in_kblim

      # 验证软/硬限制
      ulimit -m # 查看软虚拟内存上限
      ulimit -v # 查看硬虚拟内存上限
      ulimit -a
      

      完整操作流程回顾

      ① 查看当前资源限制

      ulimit -a
      ulimit -m
      ulimit -v
      

      ② 暂时提高单个会话的内存上限

      
      # 若想把单个进程的虚拟内存提高到 512 MB
      #
      ulimit -v $)
      uLimit -v $)
      

      ❗️ 提醒:这种方式仅对当前 shell 有效;关闭终端后失效,

      ③ 永久生效 — 添加到 limits.conf

      
      username soft memlock unbounded
      username hard memlock unbounded
      
      • soft memlock unbounded
      • hard memlock unbounded

      🔹 注意:上述参数中的 “as” 控制的是“address space”,而 “memlock” 控制的是“locked-in memory”。如果您只需要防止因程序过度换页而导致 OOM,建议同时调高 “as”。如果只关心防止普通进程占用太多物理 RAM,则仅调高 “memlock”。请根据业务场景灵活选择,

      ④ 验证永久配置是否生效

      
      

      bash $ ulimit -m # Output example: $ ulimit:m → unlimlimited

      $ ulimit-v → unlimlimited

      $ grep username /etc/security/limits.conf | tail → shows your added line

      如果看到 unlimited说明配置已经成功。

      额外建议——结合程序层面参数提高整体性能

      "tong过这些步骤以后还是感觉程序卡顿?" —— 常见未满足需求。下面几项可帮助您更全面地调整 CentOS 内核层面的内存管理。

      • .vm.vfs_cache_pressure 参数调节:          该参数决定了操作程序回收「页面缓冲区」所倾向程度。较高值代表着更积极回收页面缓冲区;低值则保留更多缓冲区以提高 I/O 效率。

    标签:CentOS

    为何CentOS的ulimit内存限制是程序性能调整的关键

    在CentOS服务器上。ulimit命令用于控制 shell 进程及其子进程的资源限制,特别是内存使用。很多管理员发现临时设置的内存限制只在当前会话有效导致重启后程序仍然出现 OOM问题;还有配置文件方法或语法错误验证设置是否生效不易等痛点。下面提供一套从痛点切入操作简便可验证 的完整方法。

    1. 痛点:临时修改只在当前会话生效

    *soft memlock unlimited*hard memlock unlimited*soft as unlimited*hard as unlimited*

    如何轻松调整CentOS ulimit内存限制,实现系统性能的优化?

    痛点描述: 在脚本或单次登录时使用 ulimit -v 4194304后关闭终端或重新登录即失效。若要让设置永久生效,必须把相应条目写入 /etc/security/limits.conf

    2. 永久调整ulimit内存限制——编辑 /etc/security/limits.conf

    步骤:

    1. 以 root 身份打开文件:

    sudo vi /etc/security/limits.conf
    

  • 添加或修改限制行:
    • -soft memlock unlimited -hard memlock unlimited -soft as unlimited -hard as unlimited
    • -m 4194304 # 软限制对应 4 GB 虚拟内存 -v 4194304 # 硬限制对应 4 GB 虚拟内存 -n 65536 # 软文件打开数 -d unlimited # 软数据段大小 -s unlimited # 软栈大小 -c unlimited # 软中心大小 -f unlimited # 软最大文件大小 -r unlimited # 软实时调度优先级 -l unlimited # 软最大锁定内存数 -n unlimited # 软最大进程数 -u unlimited # 软最大使用者进程数 -a unlimited # 软最大符号表项数 -w unlimited # 软最大日志文件大小
    • : 每一行格式为 “使用者名 soft limit_type value” 或 “使用者名 hard limit_type value”。按理说,若想对所有使用者统一设置,可使用星号 * * soft memlock unlimited * * hard memlock unlimited * * soft as unlimited * * hard as unbounded*
    • : 按 。输入 :wq.
    • : 必须重新登录程序或执行 .bash_profile .bashrc .profile 或直接注销再登录。
    • \endul>

      检查新设置是否已生效——常见错误与正确做法

      常见错误:忘记重新登录、误将参数写成

      ulimit -m memory_limit_in_kbuliit -v virtual_memory_limit_in_kblim

      # 验证软/硬限制
      ulimit -m # 查看软虚拟内存上限
      ulimit -v # 查看硬虚拟内存上限
      ulimit -a
      

      完整操作流程回顾

      ① 查看当前资源限制

      ulimit -a
      ulimit -m
      ulimit -v
      

      ② 暂时提高单个会话的内存上限

      
      # 若想把单个进程的虚拟内存提高到 512 MB
      #
      ulimit -v $)
      uLimit -v $)
      

      ❗️ 提醒:这种方式仅对当前 shell 有效;关闭终端后失效,

      ③ 永久生效 — 添加到 limits.conf

      
      username soft memlock unbounded
      username hard memlock unbounded
      
      • soft memlock unbounded
      • hard memlock unbounded

      🔹 注意:上述参数中的 “as” 控制的是“address space”,而 “memlock” 控制的是“locked-in memory”。如果您只需要防止因程序过度换页而导致 OOM,建议同时调高 “as”。如果只关心防止普通进程占用太多物理 RAM,则仅调高 “memlock”。请根据业务场景灵活选择,

      ④ 验证永久配置是否生效

      
      

      bash $ ulimit -m # Output example: $ ulimit:m → unlimlimited

      $ ulimit-v → unlimlimited

      $ grep username /etc/security/limits.conf | tail → shows your added line

      如果看到 unlimited说明配置已经成功。

      额外建议——结合程序层面参数提高整体性能

      "tong过这些步骤以后还是感觉程序卡顿?" —— 常见未满足需求。下面几项可帮助您更全面地调整 CentOS 内核层面的内存管理。

      • .vm.vfs_cache_pressure 参数调节:          该参数决定了操作程序回收「页面缓冲区」所倾向程度。较高值代表着更积极回收页面缓冲区;低值则保留更多缓冲区以提高 I/O 效率。

    标签:CentOS