关于linux下swap交换分区和内存利用的问题

两个大前提:

1)swap不能代替物理内存使用。

2)swap在非高内存主机上必不可少


关于swap的知识点比较绕,如果看不懂请多看几遍。

swap空间上的数据,是存储在硬盘上的。所以很多人常常以性能问题,提出禁用swap的观点。因为在硬盘上读取数据的性能通常并不是很好。但是请注意,正常的情况下,swap空间上存储的是系统不会频繁使用的数据,调用的次数非常少,性能问题几乎可以忽略。

什么是正常的情况?正常的情况就是物理内存还够使用。

如果物理内存不够用了呢?上面提到物理内存够用的时候只把不常使用的数据放到swap,那么,如果物理内存不够用了,系统会把物理内存放不下的数据尽量swap里放,因为它不得不这样做,这样一来就会造成系统频繁的操作swap数据。

另外一点再解释下,CPU可以读取内存上的数据,但是硬盘上的数据(也就是这里讲的swap ),需要先读入内存,然后才能交给CPU处理。大家都明白,硬盘数据到内存的速度,要比内存的数据到CPU的速度,可能要慢上几百几千倍。

提供一个具体实例来解读一下

1)如果没有swap:

swap用了511M,空闲的物理内存是324M,也就是说,如果没有swap,内存已经爆了。

2)swap并没有影响到性能:

如前面所说,这个时候系统还有足够的物理内存(351M),换句话说,现在swap里存储的还是不常使用的数据(也就是swap正在发挥正常的作用)。

3)如果一定不要用swap:

正常的情况,swap是不常使用的数据,但是不常使用,它毕竟还是要使用,还是要从硬盘读取到内存,对于不差钱的土豪,完全可以花钱加内存,然后把swap去掉,只是这样做的性价比非常的低。

再强调一下:swap不能代替物理内存用!

已经重复了多次,swap正常的情况下只存放不常用的数据,如果物理内存不够用了,那么常用和不常用的数据都会放进swap,这样会导致系统频繁的从硬盘读数据,再往硬盘写数据,把硬盘IO卡成翔。所以不要觉得内存不够用了,多加些swap就可以了,不是这么回事。

 什么样的主机可以不用swap?

从我自己的使用经验来看,swap通常最多只会占用到几百M,没有见到超过1G的。

那么要考虑的问题就是:对于有大物理内存的主机,这几百M到1G的内存是可有可无的,可以忽略的。

我个人觉得,至少是8G起,如果内存还不到8G,比如只有1G、2G,甚至512M,swap还是加上好前段时间处理过二台土豪机,64G的物理内存,这些内存根本用不完,当然就不再需要swap了。

 swap并不是越多越好

很早很早很早的文章会提到,swap通常设置为物理内存的2倍,但是现在年代不一样了,添加太多了根本用不到。

个人建议:2G和2G以下的,设置成和物理内存相同容量swap,2G以上的,设置为2G。

8G以上的机器可以不再设置swap,但是要自己设置好Mysql缓存,PHP的memory_limit,处理PHP的进程数量(Apache或者php-fpm),把这些协调好,不要让内存在访问高峰爆掉。

 可能有人会说了,我没swap,一样用的好好的。

对于访问量非常低的主机,这当然不会有问题,没什么好解释的。

关于访问量:既然上面提到访问量了,那么再多说下。

经常有人说,我网站一天就几十个IP,怎么也挂了?

要知道,“访问”你网站的,不只是浏览器,更多的是搜索引擎的蜘蛛,比如阿里巴巴旗下的垃圾蜘蛛“一搜”(已改名为神马),这些垃圾蜘蛛甚至会并发抓取,这样搞下来,对于服务器,和被攻击的效果是一样的,对于静态网站,影响不会很大,但是对于wordpress这种负载能力的程序,影响可就大了。

而蜘蛛的抓取,在流量统计(如51LA,CNZZ)里是统计不到的。所以这种情况就不要拿统计来说事了。

最后总结下:

听哥的话,小内存的机器,把swap加上,只有好处,没有坏处。


转载于:https://my.oschina.net/ajian2014/blog/301740

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值