swap是内存不够用的时候,临时用一点儿磁盘空间代替内存。出现的问题,就是程序在用内存的时候,可能会用到swap,相应的IO能力下降。关掉就不会出现这个问题,但是关掉以后,内存超出设定值,程序就可能会直接崩掉。
一、为什么很多Linux软件的安装教程都要求关闭swap
swap是内存不够用的时候,临时用一点儿磁盘空间代替内存。
出现的问题,就是程序在用内存的时候,可能会用到swap,相应的IO能力下降。
关掉就不会出现这个问题,但是关掉以后,内存超出设定值,程序就可能会直接崩掉。崩掉的结果,好一点儿的会重启,差一点儿的会崩溃,看具体是什么程序。
如果只是web这样的程序,大多都是k8s或者是docker这样的集群、容器,崩几个节点无所谓。
如果是mysql这样的数据库,一般也不用容器,因为根本就不考虑mysql挂掉自动重启的使用状况。
mysql一般都设置有内存使用上限,设置使用内存的75%或者80%,不能让它满了,用到swap反而会下降mysql性能。
也还要看机器配置,Linux的内存机制是尽量多的使用内存。swap在一般运行时占用情况不多。但是有些内存很小的arm板子没有swap很多软件在编译时会因为内存不足导致编译报错而中断。如果内存非常大的话可以关闭swap,配置一般还是推荐保留一点或者代替运存。
延伸阅读:
二、swap的主要功能
(1)、当物理内存不足的时候,将某些在内存中所占用的程序暂时移动到swap当中,让物理内存可以被需要的程序来使用;
(2)、Linux会将内存中不常访问的数据保存到swap中,当系统需要再次调用的时候,就把它从swap加载到内存;
(3)、如果你的主机支持电源管理模式,也就是说,你的Linux主机系统可以进入”休眠”模式的话,那么,运行当中的程序状态则会被记录到swap中去,以作为”唤醒”主机状态的依据;
(4)、在某些程序运行时,本来就会利用swap特性来存放一些数据,比如在装Oracle11g的时候会检查swap size。