在生产环境中,我们经常需要对 CentOS 系统中的服务进行资源限制,以防止某个服务占用过多 CPU 或内存,影响整个系统的稳定性。本文将手把手教你如何使用 systemd 对 CentOS 服务进行资源限制,即使是 Linux 新手也能轻松上手。
当某个服务(如 Web 服务器、数据库或自定义应用)出现异常或配置不当,可能会消耗大量系统资源,导致其他关键服务无法正常运行。通过设置合理的 CentOS服务资源限制,可以有效隔离风险,提升系统整体稳定性。
从 CentOS 7 开始,系统默认使用 systemd 作为初始化系统和服务管理器。systemd 提供了强大的资源控制功能,基于 Linux 的 cgroups(控制组)技术,可以轻松限制服务的 CPU、内存、I/O 等资源。
例如,假设我们要限制 nginx 服务的资源使用:
systemctl list-units --type=service | grep nginx 不要直接修改原始服务文件!推荐使用 systemd 的“drop-in”机制,在 /etc/systemd/system/ 下为服务创建覆盖配置:
sudo mkdir -p /etc/systemd/system/nginx.service.d 在该目录下创建一个名为 override.conf 的文件:
sudo vim /etc/systemd/system/nginx.service.d/override.conf 然后写入以下内容(根据你的需求调整数值):
[Service]# 限制最大内存使用为 512MBMemoryMax=512M# 限制可用内存硬上限(超过会被 kill)MemoryLimit=600M# 限制 CPU 使用为 1 个核心的 50%(即 0.5 核)CPUQuota=50%# 限制可打开的文件描述符数量LimitNOFILE=4096 💡 提示:
MemoryMax是软限制(允许短暂超限),MemoryLimit是硬限制(超限立即终止进程)。建议两者都设置。
sudo systemctl daemon-reloadsudo systemctl restart nginx 使用以下命令查看服务的资源使用情况和限制:
systemctl show nginx --property=MemoryMax,MemoryLimit,CPUQuota 你也可以使用 systemd-cgtop 实时监控各服务的资源消耗:
systemd-cgtop CPUQuota=50%:限制 CPU 使用率(100% = 1 个核心)MemoryMax=512M:最大内存使用量(软限制)MemoryLimit=600M:内存硬上限(超限被 kill)TasksMax=100:限制进程/线程总数IOWeight=100:设置 I/O 权重(相对值,默认 100)通过 systemd 的资源控制功能,我们可以轻松实现 CentOS服务资源限制,有效防止服务失控。这种方法不仅适用于 nginx,也适用于 MySQL、Redis、自定义 Python/Java 应用等任何由 systemd 管理的服务。
掌握这些技巧,你就能更好地进行 Linux服务性能优化 和 CentOS内存CPU限制,保障服务器稳定运行。这也是现代 DevOps 和系统管理员必备的 systemd资源控制 技能。
✅ 本文适用于 CentOS 7/8/Stream 及 RHEL 系统。
本文由主机测评网于2025-12-06发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025123711.html