- 主题:求问linux如何控制用户内存使用上限
发现有时候不小心,就会把系统内存耗光,然后机器出现死机状态。
在队列系统里,貌似会直接把超内存的任务杀死。
求问如何能够有一套类似队列里的东西,监控进程的内存使用情况,如果超出,就及时kill该用户所有进程。
测了几个网上推荐的,貌似都不管用。
求大神推荐个好用的工具,
多谢多谢
--
FROM 180.168.176.*
搜了一下,cgroups + systemd
--
FROM 221.220.171.*
多谢多谢。
配置了systemd搞定了
【 在 z16166 的大作中提到: 】
: 搜了一下,cgroups + systemd
--
FROM 180.168.176.*
你安装系统的时候没有分配交换分区,可以用swapon命令打开交换空间就不会耗光内存了
【 在 chemphy123 的大作中提到: 】
: 发现有时候不小心,就会把系统内存耗光,然后机器出现死机状态。
: 在队列系统里,貌似会直接把超内存的任务杀死。
: 求问如何能够有一套类似队列里的东西,监控进程的内存使用情况,如果超出,就及时kill该用户所有进程。
: ...................
--
FROM 112.247.161.*
交换空间一样会耗光的
【 在 smthxes 的大作中提到: 】
: 你安装系统的时候没有分配交换分区,可以用swapon命令打开交换空间就不会耗光内存了
:
--
FROM 111.196.185.*
你要是杠,确实会耗光
【 在 echiz 的大作中提到: 】
: 交换空间一样会耗光的
:
--
修改:smthxes FROM 112.247.161.*
FROM 112.247.161.*
不是杠,我就是手头这个机器不能扩内存,没事就死掉才换的机器
你认为是杠,只能说你的应用场景真没啥用到内存的地方
【 在 smthxes 的大作中提到: 】
: 你要是杠,确实会耗光
:
--
FROM 110.229.106.*
现代os对于内存这个概念是很模糊的。不如说现代os压根没有内存这个概念,你所谓的内存,其形式更像是缓存。
现代os,malloc基本就只是一个声明。哪怕你只剩下几M内存了,你依然可以malloc 10tb内存,malloc基本上是永远成功的,不会返回oom的错误。只有真正使用内存的时候才发生分配。且有各种share的情况,以及被swap出去(哪怕内存充足,使用率低一样会被swap出去),甚至压缩掉等等的情况。
所以现代os,要计算某个程序到底用了多少物理内存,其实很难算清的,是一笔糊涂账。
所以他说的其实也没错,你所谓的死机,更多的是内存太低之后导致运行效率很低,运行的非常慢,表现的像是卡死。实际上并不是真的死机,真用的太厉害也会触发oom kill,并不会死掉。
一般来说你如果是ssd的话,划块出来swapon就能解决问题。我之前有个计算应用需要用到100多GB的内存,我在32G的机器上开个swap给它补了100G,跑的还挺顺畅的。
【 在 echiz 的大作中提到: 】
: 不是杠,我就是手头这个机器不能扩内存,没事就死掉才换的机器
: 你认为是杠,只能说你的应用场景真没啥用到内存的地方
:
--
修改:lvsoft FROM 124.79.171.*
FROM 124.79.171.*
自己的机器吧。
我之前测公有云的机器磁盘延迟都特别大,没法这么玩。
公有云的 IPOS 都是只管带宽,不管延迟的。很忽悠。
【 在 lvsoft 的大作中提到: 】
: 现代os对于内存这个概念是很模糊的。不如说现代os压根没有内存这个概念,你所谓的内存,其形式更像是缓存。
: 现代os,malloc基本就只是一个声明。哪怕你只剩下几M内存了,你依然可以malloc 10tb内存,malloc基本上是永远成功的,不会返回oom的错误。只有真正使用内存的时候才发生分配。且有各种share的情况,以及被swap出去(哪怕内存充足,使用率低一样会被swap出去),甚至压缩掉等
: 鹊那榭觥
: ...................
--
修改:hgoldfish FROM 120.37.22.*
FROM 120.37.22.*
其实我想表达的是作为代码的开发者,应该对自己的应用场景和数据规模有预期。
应该给出运行环境建议,并避免用完所有资源导致的问题。
作为开发者,不应该假定资源是无限的。
【 在 lvsoft 的大作中提到: 】
: 现代os对于内存这个概念是很模糊的。不如说现代os压根没有内存这个概念,你所谓的内存,其形式更像是缓存。
: 现代os,malloc基本就只是一个声明。哪怕你只剩下几M内存了,你依然可以malloc 10tb内存,malloc基本上是永远成功的,不会返回oom的错误。只有真正使用内存的时候才发生分配。且有各种share的情况,以及被swap出去(哪怕内存充足,使用率低一样会被swap出去),甚至压缩掉等等的情况。
: 所以现代os,要计算某个程序到底用了多少物理内存,其实很难算清的,是一笔糊涂账。
: ...................
--
FROM 110.229.106.*