0

0

如何限制Linux服务资源占用 systemd.slice配置详解

P粉602998670

P粉602998670

发布时间:2025-08-02 08:38:01

|

548人浏览过

|

来源于php中文网

原创

可以通过创建并配置systemd.slice文件限制服务资源使用,具体步骤如下:1. 创建.slice文件并设置资源限制,如cpuweight和memorymax;2. 在服务的unit文件中添加slice参数绑定到对应slice;3. 重载systemd并重启服务生效配置;常用选项包括cpu权重、内存上限、io优先级等,修改后需用systemctl命令确认状态并调试。

如何限制Linux服务资源占用 systemd.slice配置详解

Linux系统运行久了,难免会遇到某个服务占用过多CPU、内存或者IO资源的情况,导致系统卡顿甚至崩溃。如果你用的是systemd作为初始化系统(比如CentOS 7+、Ubuntu 18.04+),其实可以通过

systemd.slice
来限制服务的资源使用。下面我们就来看看怎么操作。

如何限制Linux服务资源占用 systemd.slice配置详解

如何通过slice文件控制服务资源

systemd允许我们把进程划分到不同的“slice”中,每个slice可以设置独立的资源限制,比如CPU权重、内存上限等。你可以理解为给服务分配一个“资源盒子”,它只能在这个盒子里活动。

具体来说,你需要创建一个

.slice
文件,放在
/etc/systemd/system/
目录下。例如:

如何限制Linux服务资源占用 systemd.slice配置详解
sudo vi /etc/systemd/system/my-limited.slice

然后在里面写入资源限制配置,比如:

[Slice]
CPUWeight=100
MemoryMax=512M

上面的例子表示这个slice里的所有服务最多只能使用512MB内存,CPU优先级为100(默认是100,数值越高越优先)。

如何限制Linux服务资源占用 systemd.slice配置详解

怎么让服务跑在特定slice里

光有slice还不够,你还需要把你的服务绑定到这个slice里。方法很简单,在服务的unit文件中加上一句:

Slice=my-limited.slice

举个例子,如果你有一个叫

myapp.service
的服务文件,修改后看起来像这样:

炉米Lumi
炉米Lumi

字节跳动推出的AI模型分享社区和模型训练平台

下载
[Unit]
Description=My Custom App

[Service]
ExecStart=/usr/bin/myapp
Slice=my-limited.slice

[Install]
WantedBy=multi-user.target

保存之后记得重载systemd配置:

sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl restart myapp

这样,这个服务就会被限制在你设定的资源范围内运行了。


常见资源限制选项有哪些

以下是几个常用的资源限制项,可以根据实际需求组合使用:

  • CPUWeight=
    :设置CPU调度优先级,数值范围1-10000,默认是100。
  • MemoryMax=
    :限制最大内存使用,比如
    512M
    2G
  • MemoryHigh=
    :软性内存限制,超过后会被节制但不会立刻OOM。
  • IOWeight=
    :磁盘IO优先级,和CPUWeight类似。
  • TasksMax=
    :限制服务能创建的最大线程数。

这些参数都支持单位后缀,比如K、M、G,非常方便。

小提示:如果你不确定具体数值,建议先从保守值开始测试,逐步调整。比如先限制内存为1G,观察服务是否稳定,再根据情况增减。

注意事项和调试方法

虽然配置不复杂,但有些细节容易出问题:

  • 修改slice之后必须重载systemd,否则新配置不生效。
  • 某些老版本systemd可能不支持部分参数,注意系统版本
  • 可以用
    systemctl status myapp
    查看服务是否成功应用了slice。
  • 使用
    systemd-cgtop
    命令实时监控各slice的资源使用情况。

如果你发现服务被限制得太死导致无法正常运行,可以临时去掉slice配置,或者调高限制值。

基本上就这些,合理使用slice可以帮助你更好地管理服务器资源,避免个别服务拖垮整个系统。

相关专题

更多
线程和进程的区别
线程和进程的区别

线程和进程的区别:线程是进程的一部分,用于实现并发和并行操作,而线程共享进程的资源,通信更方便快捷,切换开销较小。本专题为大家提供线程和进程区别相关的各种文章、以及下载和课程。

481

2023.08.10

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1349

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

702

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

294

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

776

2023.07.05

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

572

2023.07.06

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

545

2023.07.20

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

297

2023.07.20

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

72

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.4万人学习

Git 教程
Git 教程

共21课时 | 2.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号