TA的每日心情 | 奋斗 2021-4-20 05:43 |
|---|
签到天数: 300 天 [LV.8]合体
|
季侯 发表于 2023-5-24 15:50
5 c' N9 a' p% r" H' _从你的问题来看,你不是从事相关技术领域研发或者维护过大规模服务器集群的,所以就不说太多细节了。
( R* |, J, n, m" X0 G, F f! ~& h6 h: U6 p
我 ...
+ |# s3 X- P9 v4 x5 u4 @5 D1 P是这篇文章说的道理吗?https://developer.aliyun.com/article/194733
2 A: W$ m9 X1 n+ W- F: H0 x0 q0 X2 h9 s) `2 D
服务器一般都会配置监控程序,当内存用量达到一个阈值的时候告警或者会自动重启异常的进程。但如果没有监控呢?当内存被用光的时候,分两种情况:
' K; F, X: B5 f% k% j, N7 ^2 h4 d/ w+ S
配置了swap:这时服务器还能提供服务,但性能会降低好几个档次,直到最终处于几乎死机状态,并且这一过程将持续很长一段时间,对服务器来说是个灾难;所以配置swap只能让服务再苟延残喘一会儿,然后就是长时间的服务中断(比如原来是每秒处理1000个请求的服务器,由于频繁使用swap,导致现在每秒只能处理50个请求,站在系统角度,进程还在运行,但是在业务角度服务已经几乎中断了)。* G2 D0 j V- Z: ^* q- E( ^8 x% G- k3 o
没配置swap:这时内核的OOM killer被触发,在默认配置下,耗内存的进程会被优先kill掉,这种进程一般就是我们的业务进程,这时守护进程就会自动重启该业务进程(没有守护进程?开什么玩笑),这种情况只会造成服务中断一会会儿(取决于进程重启的时间),不会出现上面因配置了swap而导致性能很差且服务持续中断的情况。就算OOM killer没有kill掉预期的进程,我们通过测试也能发现,然后将OOM killer配置成重启系统,那也比配置了swap在那里苟延残喘的好。
0 q/ u, P7 @0 |$ k* d% n, _* b从上面可以看出,对服务器来说,似乎不配置swap更好,可以让有问题的进程尽快重启,缩短业务受影响的时间。 |
|