Linux服务器端记录

本文记录了工作中使用到的Linux服务器端shell命令用法,
包括Linux运行状态监控、故障处理、性能调优等内容。

刷新swap空间。

某日,dev小伙伴应pm需求从线上导出八十万行订单数据,python脚本直接把内存吞掉了,swap空间也耗费了许多,直接导致noc报警。

之后紧急处理把python脚本停掉。尽管内存马上就释放掉了,但是swap空间仍然在一点点缓慢释放,noc一直催促释放swap空间。

一番Google之后,找到了这两个命令来释放swap空间:

1
2
sudo swapoff -a
sudo swapon -a

关于这个办法,有两种声音。

有说这个命令只是禁用掉swap空间,此时使用swap空间的进程会被kernel杀死:

The swap was not copied to RAM. It was merely disabled. You should ensure the box is not swapping before doing this. If you do, then the kernel will see the memory disappear and the OOM-Killer will probably start killing off applications arbitrarily. There’s no reason you should need to ‘clean’ out the swap like this. (see my other comment) :)

也有说这个命令执行之后,kernel会分析swap空间,将正在使用的page移动至mem,未使用的page直接擦除:

Actually the swap is, basically, copied to ram, or more accurately, the pages are swapped back in from disk to RAM before the swap can be disabled.

后经验证,第二种说法是正确的。第一种说法的意思可能是如果内存不够用,进程会被kernel杀死(未验证)。