收到报警,swap空间占用太高,登陆到系统查看内存使用详情,看到物理内存还有不少未使用node
Swap配置对性能的影响
分配太多的Swap空间会浪费磁盘空间,而Swap空间太少,则系统会发生错误。若是系统的物理内存用光了,系统就会跑得很慢,但仍能运行;若是Swap空间用光了,那么系统就会发生错误。例如,Web服务器能根据不一样的请求数量衍生出多个服务进程(或线程),若是Swap空间用完,则服务进程没法启动,一般会出现“application is out of memory”的错误,严重时会形成服务进程的死锁。所以Swap空间的分配是很重要的。
一般状况下,Swap空间应大于或等于物理内存的大小,最小不该小于64M,一般Swap空间的大小应是物理内存的2-2.5倍。但根据不一样的应用,应有不一样的配置:若是是小的桌面系统,则只须要较小的Swap空间,而大的服务器系统则视状况不一样须要不一样大小的Swap空间。特别是数据库服务器和Web服务器,随着访问量的增长,对Swap空间的要求也会增长,通常来讲对于4G 如下的物理内存,配置2倍的swap,4G 以上配置1倍。
另外,Swap分区的数量对性能也有很大的影响。由于Swap交换的操做是磁盘IO的操做,若是有多个Swap交换区,Swap空间的分配会以轮流的方式操做于全部的Swap,这样会大大均衡IO的负载,加快Swap交换的速度。若是只有一个交换区,全部的交换操做会使交换区变得很忙,使系统大多数时间处于等待状态,效率很低。用性能监视工具就会发现,此时的CPU并不很忙,而系统却慢。这说明,瓶颈在IO上,依靠提升CPU的速度是解决不了问题的。linux
swap配置优化:数据库
控制swap使用的系统参数:swappiness,wappiness的值的大小对如何使用swap分区是有着很大的联系的。服务器
swappiness=0的时候表示最大限度使用物理内存,而后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,而且把内存上的数据及时的搬运到swap空间里面。linux的基本默认设置为60,具体以下:app
通常默认值都是60 工具
[root@swnode2 ~]# cat /proc/sys/vm/swappiness
60性能
也就是说,你的内存在使用到100-60=40%的时候,就开始出现有交换分区的使用。你们知道,内存的速度会比磁盘快不少,这样子会加大系统io,同时造的成大量页的换进换出,严重影响系统的性能,因此咱们在操做系统层面,要尽量使用内存,对该参数进行调整。优化
临时调整的方法以下,咱们调成10:
[root@swnode2 ~]# sysctl vm.swappiness=10
vm.swappiness = 10
[root@swnode2 ~]# cat /proc/sys/vm/swappiness
10
这只是临时调整的方法,重启后会回到默认设置的操作系统
要想永久调整的话,须要将
须要在/etc/sysctl.conf修改,加上:
[root@swnode2 ~]# cat /etc/sysctl.conf.net
# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 4294967296
vm.swappiness=10
激活设置:
#sysctl -p
简单地说这个参数定义了系统对swap的使用倾向,默认值为60,值越大表示越倾向于使用swap。能够设为0,这样作并不会禁止对swap的使用,只是最大限度地下降了使用swap的可能性。
经过sysctl -q vm.swappiness能够查看参数的当前设置。
修改参数的方法是修改/etc/sysctl.conf文件,加入vm.swappiness=xxx,并重起系统。这个操做至关因而修改虚拟系统中的/proc/sys/vm/swappiness文件,将值改成XXX数值。
参考连接:https://blog.csdn.net/lufeisan/article/details/53339991
https://blog.csdn.net/ly890700/article/details/73695750