Linux 服务器怎么预留资源(CPU、内存、IO 等)

2020-12-25 19:30:44 +08:00
 symb0l

Linux 服务器怎么预留资源( CPU 、内存、IO 等),避免应用将 CPU 、内存、IO 全部吃完,避免出问题的时候,服务器登录不上,有大佬知道如何限制吗?

5292 次点击
所在节点    Linux
37 条回复
symb0l
2020-12-25 19:31:31 +08:00
通过内核配置可以限制吗?
aheadlead
2020-12-25 19:33:12 +08:00
cgroup
symb0l
2020-12-25 19:35:13 +08:00
@aheadlead 谢谢回复,用 cgroup 限制应用访问资源么,有点麻烦耶,我的意思是怎么配置,例如服务器的 CPU 只能跑到 95%,预留 5%的资源,大佬有这种设置吗?
taogen
2020-12-25 19:35:23 +08:00
看头像就进来了
MeteorCat
2020-12-25 19:35:56 +08:00
systemctl 有配置选项,你按照启动脚本加上 MemoryHigh,MemoryMax,还有 CPU 配置选项,这玩意特别有用,在搭建镜像拉取节点服务的时候防止占用过高特别有用
westoy
2020-12-25 19:36:00 +08:00
cgroup 限制容器或者虚拟机的资源

其实没必要预留
就算高负载运转, 不是极端情况不至于登不上
但是万一你被人打到端口都堵了, 丢包丢的稀里哗啦的, 资源预留也基本登不上了......

这种情况,VPS 一般有 VNC, 物理机有 IPMI 、KVM over IP, 实在啥也没有让机房的人帮你重启一下
symb0l
2020-12-25 19:36:17 +08:00
@taogen 守望 PG......
MeteorCat
2020-12-25 19:36:35 +08:00
具体可以参照官方手册,但是要求你 linux 守护程序是 systemctl
symb0l
2020-12-25 19:38:34 +08:00
@MeteorCat 谢谢大佬,但这种都是限制某个服务的,我的意思是指能不能通过什么配置,让服务器的 CPU 只能跑到 95%,预留 5%的资源,不至于出现极端情况,只能重启服务器。
symb0l
2020-12-25 19:39:19 +08:00
@westoy 谢谢大佬,我没表达清楚,我的意思是指能不能通过什么配置,让服务器的 CPU 只能跑到 95%,预留 5%的资源,不至于出现极端情况,只能重启服务器。
MeteorCat
2020-12-25 19:41:13 +08:00
@symb0l 我记得可以用 systemctl 对服务切片限制的,我看看手册
symb0l
2020-12-25 19:42:33 +08:00
@MeteorCat 好咧,坐等大佬~
MeteorCat
2020-12-25 20:23:35 +08:00
我看了一下, 可以执行命令 `sudo systemctl edit --force system.slice`, 之后限定 system.slice 的切片为:

```ini
[Slice]
CPUQuota=95%
MemoryMax=1G
```

但是这种方案实际上治标不治本, 还是要排查出指定哪个服务呢问题来处理

可以参考配置:
官方文档: https://www.man7.org/linux/man-pages/man5/systemd-user.conf.5.html
网上回答: https://serverfault.com/questions/874274/systemd-per-user-cpu-and-or-memory-limits
MeteorCat
2020-12-25 20:25:30 +08:00
上面的方法还是治标不治本, 最好还是利用 `sudo systemd-cgtop` 命令来查看哪个服务器占用最异常再去进行限制
hatebugs
2020-12-25 20:27:12 +08:00
感觉这是 xy 问题,确定要要解决的 x 问题,而不是花心思花精力搞 y 问题。
BrettD
2020-12-25 21:08:35 +08:00
没看懂楼主什么意思,服务器 CPU 为什么要浪费 5%不用呢
symb0l
2020-12-25 21:24:50 +08:00
@hatebugs 主要目前现在 x 问题,会突发,不想在 x 问题发生的时候太过于变动
symb0l
2020-12-25 21:25:27 +08:00
@BrettD 预留资源,在极端情况下,,,不至于连登录服务器查问题都做不了嘛
symb0l
2020-12-25 21:25:47 +08:00
@MeteorCat 感谢大佬,学习 ing
westoy
2020-12-25 21:29:06 +08:00
@symb0l

你如果没手动改抢占模式, 再指定各程序优先级, 这种状况情况不可能出现的, 你让所有核跑 while(1);同时占满, 都可以无障碍登录上去

我目前碰到过无法登录的, 内核挂掉, 只能人工干预; 硬盘挂,WA 100%,登录上去基本动都不能动, 只能人工干预; 被人打爆,SSH 上去直接超时,或者登录后直接卡死, 只能人工干预.......

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/739016

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX