TA的每日心情 | 奋斗 2021-4-20 05:43 |
|---|
签到天数: 300 天 [LV.8]合体
|
季侯 发表于 2023-5-24 15:50, u* M- K: D( r9 r$ b8 m
从你的问题来看,你不是从事相关技术领域研发或者维护过大规模服务器集群的,所以就不说太多细节了。
: x# { [& K9 @3 Q* a' H4 t) w3 M& r$ Z) J
我 ... 4 h# J% t, w% g8 x9 q* a, k
是这篇文章说的道理吗?https://developer.aliyun.com/article/194733
" A2 G: k1 w- ?* k- f1 N, L. a2 S7 n2 J% R8 z. J. f; g
服务器一般都会配置监控程序,当内存用量达到一个阈值的时候告警或者会自动重启异常的进程。但如果没有监控呢?当内存被用光的时候,分两种情况:) B, ~3 i$ B" x' C- u2 g, ?
: X4 W: H5 @( @* J* e2 x
配置了swap:这时服务器还能提供服务,但性能会降低好几个档次,直到最终处于几乎死机状态,并且这一过程将持续很长一段时间,对服务器来说是个灾难;所以配置swap只能让服务再苟延残喘一会儿,然后就是长时间的服务中断(比如原来是每秒处理1000个请求的服务器,由于频繁使用swap,导致现在每秒只能处理50个请求,站在系统角度,进程还在运行,但是在业务角度服务已经几乎中断了)。8 ?' O' y7 V0 w9 |
没配置swap:这时内核的OOM killer被触发,在默认配置下,耗内存的进程会被优先kill掉,这种进程一般就是我们的业务进程,这时守护进程就会自动重启该业务进程(没有守护进程?开什么玩笑),这种情况只会造成服务中断一会会儿(取决于进程重启的时间),不会出现上面因配置了swap而导致性能很差且服务持续中断的情况。就算OOM killer没有kill掉预期的进程,我们通过测试也能发现,然后将OOM killer配置成重启系统,那也比配置了swap在那里苟延残喘的好。, V7 l; i7 Q) M+ R7 M" z
从上面可以看出,对服务器来说,似乎不配置swap更好,可以让有问题的进程尽快重启,缩短业务受影响的时间。 |
|