ulimit 如何正确设置?

2018-01-22 22:53:18 +08:00
 guyskk0x0

电脑是 Linux 系统,经常出现内存快用光时卡死,尝试用 ulimit 限制内存使用。

/etc/security/limits.conf 配置(电脑是 8G 内存):

*                hard    as              7500000
guyskk           hard    as              5500000
guyskk           soft    as              5000000

实际效果貌似是限制单个进程,比如我开了两个进程,A 吃 3G 内存,B 吃 3G 内存没问题,单独吃 5 个 G 就会被系统杀掉,怎么限制我开的所有进程内存总和?

2438 次点击
所在节点    问与答
4 条回复
choury
2018-01-22 23:32:35 +08:00
你需要 cgroup
guyskk0x0
2018-01-23 00:05:02 +08:00
@choury ulimit 没辙了明天就研究 cgroup
julyclyde
2018-01-23 20:12:26 +08:00
按你上述的设置,如果你在同一个登录里执行俩大内存程序,是可以完美超标的

这个涉及到 limits.conf 的原理,它是由 pam_limits.conf 解释的,只对登录后的进程树有效
guyskk0x0
2018-01-23 20:24:29 +08:00
@julyclyde #3 所以说 ulimit 无法实现这个功能,或者有别的设置方法?

目前我是修改 /usr/lib/systemd/system/user.slice,用 cgroup 实现了限制:

```
[Slice]
MemoryMax=6G
CPUQuota=300%
```

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

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

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

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

© 2021 V2EX