首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何限制systemctl服务以避免内存泄漏

如何限制systemctl服务以避免内存泄漏
EN

Unix & Linux用户
提问于 2023-01-06 05:33:24
回答 1查看 243关注 0票数 0

我想分享以下的想法,并理解这是否是限制systemctl服务比通常更多地消耗内存的正确方法

例如,假设我们希望限制某些服务,使其不吃超过2G内存的东西

那麽我的建议是做以下工作:

代码语言:javascript
复制
[Service]
MemoryAccounting=yes
MemoryCurrent=2097152 
MemoryLimit=2097152 

现在最大的问题是,当服务达到2G时,会发生什么?

有一些选择,如

  1. 服务将失败
  2. 服务将重新启动

但是,我们当然希望当内存消耗达到2G时,服务将重新启动。

参考资料-

https://access.redhat.com/documentation/en-us/red_帽子_企业_linux/7/html/resource_管理_指南/秒-修改_控制_群组

https://access.redhat.com/documentation/en-us/red_帽子_企业_linux/7/html/resource_管理_指南/秒-修改_控制_群组

https://superuser.com/questions/1761261/redhat-machine-rsyslogd-eating-up-10-gb

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2023-01-06 05:56:38

Systemd使用Cgroup来实现资源约束,因此如果您的服务试图超过2GB内存,Cgroup将为您关闭它。如果您想确保它重新启动,请添加Restart=on-failureRestart=on-abort (可能还有StartLimitIntervalSec)。

来自systemd.resource-control

MemoryMax=bytes ...这控制memory.max控件组属性。

请注意,在编写此答案时,systemd已经是252,MemoryLimit已被废弃(它是cgroup v1选项),因此它不在文档页上。

来自cgroup v2文档 on memory.max

如果一个cgroup的内存使用量达到这个限制,并且无法减少,则在cgroup中调用OOM杀手。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/730727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档