阿里云ECS运行WP或Typecho的建议开启swap分区

投稿   明月登楼  2018-01-23 07:33:38  199 人阅读  39 条评论

明月最近发现自己的阿里云ECS 云主机因为放置的站点较多的缘故造成服务器内存过度紧张,通过日志发现经常性的会在凌晨至早上这个时段出现跳跃幅度很大的服务器负载飙升的现象,于是尝试着给 ECS 云主机启用了 swap 分区后,连续三天这个服务器负载飙升的现象彻底消失了。

阿里云ECS运行WP或Typecho的建议开启swap分区 建站经验 第1张

从这三天的日志数据分析来看,像明月这样的情况开启 swap 分区还是很有必要性的,并不是明月以前认为的“启用 swap 分区会造成服务器硬盘 I/O 资源紧张增加服务器负载”看法,重要的还是 swap 设定的合理性和 swap 使用频率调整度。今天看到了下面的文章内容后,感觉作者分析的还是非常的在理的,站长们应该都好好读读学习一下,对自己服务器性能的优化还是很有帮助的。

原文如下:

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

两个大前提:

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

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

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

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

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

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

阿里云ECS运行WP或Typecho的建议开启swap分区 建站经验 第2张

1)如果没有 swap

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

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

如前面所说,这个时候系统还有足够的物理内存(69M),换句话说,现在 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 加上,只有好处,没有坏处。

作者:urey_pp

大家看完后是不是豁然开朗了,1-2G 内存的服务器最好还是开启 swap 分区。从整体服务器运维层面看还是很有必要的,特别像 WordPress 这类动态博客平台下,像明月服务器下又是 WordPress ,又是 Typecho 的,基本上 swap 分区应该是“标配”了。

上述中关于搜索引擎爬虫蜘蛛的说法,明月还是非常认可的,因为即使你的网站流量非常低,也无法排除和拒绝爬虫蜘蛛的访问和抓取,甚至很多垃圾爬虫的并发访问请求,这都是不可避免的,当然有人会说已经拦截和屏蔽了垃圾爬虫蜘蛛,但你要知道垃圾爬虫蜘蛛的 IP、UA 等等信息说换就换了(代码上动态调整好像都是可以的),相对于针对 IP、UA 这样的拦截屏蔽真的是杯水车薪的。

服务器运维讲的其实就是稳定,因此明月还是建议大家考虑启用 swap 分区的,具体可以参考【阿里云 ECS 下创建、启用 swap 分区详细教程】和【Linux 下 swap 分区的作用】这两篇文章的教程(都是明月亲测实践有效的,当然主要是针对阿里云 ECS 云主机 CentOS 7.3 64 位这样的环境的。)!

历史上的今天:

如果文章对你有帮助,请赞赏支持作者继续创作!

文章标签: ,   ,   ,  
原文地址:https://www.imydl.com/wp/6725.html
温馨提示:文章内容仅代表作者个人观点,不代表boke112导航赞同其观点和对其真实性负责!
版权声明:本文为投稿文章,感谢 明月登楼 的投稿,版权归原作者所有,欢迎分享本文,转载请保留出处!
明月登楼

相关文章 分类热门分类热评最新问答

 发表评论

中国赞表情摊手表情吃瓜表情笑哭表情偷笑表情衰表情汗表情思考表情费解表情抓狂表情晕表情流泪表情疑问表情嘻嘻表情吃惊表情鼓掌表情

  1. 狂放
    狂放 @回复

    我家电脑机械硬盘,用swap会卡炸,加了根内存条,4g内存也够用了。。。于是我又想着该不该删了swap

  2. 梁兴健
    梁兴健 @回复

    看不懂这些技术类的文章真的很伤

  3. 菊
     @回复

    果然还是要掌握一些Linux技术啊

    • 明月登楼
      明月登楼 作者回复2018-01-28 22:10  回复

      @菊呵呵,玩博客现在要是不懂一些Linux基础真心是举步维艰呀!

  4. 笛声
    笛声 @回复

    阿里云的默认centos7镜像是没有开启的,我也一直没管过。使用不同的虚拟化技术,swap的效果也不一样。

  5. 纯洁博客
    纯洁博客 @回复

    看不懂 [失望]

    • 明月登楼
      明月登楼 作者回复2018-01-24 10:58  回复

      @纯洁博客呵呵,其实就是给Linux增加一个交换分区(SWAP)减轻物理内存紧张时的压力而已! [偷笑]

  6. 迷惘旅人
    迷惘旅人 @回复

    这个值得一看

  7. 趣知识
    趣知识 @回复

    这个值得一看

  8. 品牌馆
    品牌馆 @回复

    很具含量的一篇技术档

  9. SugarHosts
    SugarHosts @回复

    收到了 感谢分享

  10. 历史趣谈
    历史趣谈 @回复

    这个不错,可以改善系统数据读写性能。

  11. 易发网
    易发网 @回复

    还没用阿里云呢,开了个腾讯的玩,感觉还可以 [偷笑]

  12. 码农BTS
    码农BTS @回复

    2G以下运存不开swap跑wp确实会很累

    • 明月登楼
      明月登楼 作者回复2018-01-23 11:19  回复

      @码农BTS是的,我以前用Redis的时候动不动就被干掉了,现在想想就是因为物理内存不够给干掉了!当时就没有启用SWAP分区,所以我现在对使用SWAP态度就是必须开启,特别是内存在8G以下的!

      • 码农BTS
        码农BTS2018-01-23 13:48  回复

        @明月登楼其实基于 Linux 系统的 ext3/4 的文件系统的话,swap分区非常高效,做一个swap文件然后挂载就可以了;我以前日用笔记本是纯 Linux 系统,4G运存,加了个4G swap 很舒服,Linux系统有空余空间的话多做swap没什么问题

      • 历史趣谈
        历史趣谈2018-01-23 15:03  回复

        @明月登楼所有linux系统都建议开启swap空间,哪怕你的内存有20g,也需要开启。

  13. 微信赚钱
    微信赚钱 @回复

    云服务器不会用啊,博主能不能出个教程

  14. 学习笔记Blog
    学习笔记Blog @回复

    创建SWAP分区,有一条很重要就是要注意swappiness参数,过大了SWAP分区过于频繁使用有时候会受制于阿里云ECS硬盘I/O性能影响系统负载,目前我自己使用的swappiness值是10,大家可以根据自己的情况再做具体调整,但是不建议将swappiness值设定为大于30以上!因为阿里云ECS的硬盘I/O性能真的是很一般的! [吃惊]

    PS:swappiness=0 的时候表示最大限度使用物理内存,然后才是 swap 空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。

  15. 80后记忆
    80后记忆 @回复

    正好,有时间去把swap启用。虽然看的有点云里雾里,开启有益无害 [嘻嘻]