当前位置: 首页 > 网络 > 正文
avatar

最近服务器的负载一直高,一直定位不到真实的问题,然后开始不断折腾。发现是垃圾评论导致,这些垃圾评论绝大部分来自福建莆田市,收集并整理这些垃圾评论IP,在服务器端限制这些IP的访问,服务器的负载好了很多。对于这些可恶的垃圾评论,有本事你就用遍全球所有的ip,不然来一个封一个,下次你就进不来,对垃圾评论必须死磕到底。

最近一段时间,服务器的负载一直高的吓人,对于目前我这个阿里云低配的服务器来说,512M内存的单核处理器来说,负载竟然能高到14.9。对于这种单核处理器,负载是1以下算马马虎虎 ,4-5就算很高了,CPU的使用率基本全在75%以上。网站访问更是一度瘫痪或者访问极慢。为了应对这个问题,开始简单修改就能防止WordPress垃圾评论的方法,经过不断的尝试及调整,最后又通过限制垃圾评论IP访问的方法来解决这个问题的。

其中占用内存的最高是mysql,基本占用cpu 30%以上。然后我就开始瞎折腾了。

虽然我懂点产品,懂点前端,懂点php,懂点js,但是以前没玩过vps,对Linux命令完全陌生,nginx更是首次接触,所以下面的文字都是带有我强烈的猜测,可能猜测的风牛马不相及,非常希望懂服务器运维的童鞋能给点专业的意见。

我先说下我折腾的过程。

上上周,有童鞋跟我说博客打开很慢,有时候还数据库连接出错,然后我看了下,确实很慢,登陆阿里云后台放了cpu使用率,全部高于75%,一度接近100%。其实博客访问量也没那么高,不可能占用那么高。

然后我就反复的不停的更换主题,一会儿我自己写的主题,一会儿官方默认主题,在我使用官方默认主题Twenty Twelve的时候,cpu使用率降到50%以下,然后25%左右,博客访问基本正常,速度也还不错。

然后我就怀疑是不是我主题的问题,是不是主题使用mysql过于频繁,代码效率不够高。

然后我找了几个同样使用阿里云服务器的童鞋,同样的配置,完全使用我那个主题,虽然他流量不多,cpu的使用仅仅在5%以下,我就很不淡定了,为什么同样的主题,不一样的命运呢?

我看了他使用使用的仿垃圾评论插件,除了系统默认的Akismet之外,没有安装其他任何评论插件,他的后台也从来不见一条垃圾评论,我很嫉妒。

然后我就怀疑评论的问题了,于是我开始了更加疯狂的操作,删除了博客所有的数据(前提是备份啊,亲),完全是一个新的博客来玩,就一篇hello world,cpu的使用率和服务器负载立马降了下来,全部低于25%,于是我把备份的数据库里面的表就一个一个的导进新数据库里面,导入全部文章之后,服务器负载就上来了,进入博客后台,几十条垃圾评论,此时未使用任何防垃圾插件,包括Akismet。后台刷新一下就几十条垃圾评论,刷新一下就新增几十条评论,很是疯狂。

我似乎知道了为什么博客负载这么高,垃圾评论那是如潮水般涌入啊。我跟各位发垃圾评论的也没有什么深仇大恨的,不至于这么汹涌吧。

于是我设置必须注册用户才能发表评论,垃圾评论立马没有了,不过零星了还是有些许漏网之鱼。

接着我又研究下验证码,必须正确输入验证码才能发表评论,垃圾评论算是防住了,不过服务器负载还是挺高的。有时候cpu占用也能在25%-50%之间,不过高起来直接接近100%,这还不是一个好方法。

最后,我想了一个极端方法,我只保留了Akismet卸载了其他所有的评论防御插件,坐等垃圾评论进来,一刹那间,垃圾评论就蜂拥而至,看了下cpu占用的曲线,大概疯狂攻击的时间两个多小时,然后发现基本每天保持2个多小时的大规模攻击,其余时间算是小规模骚扰。

几个小时累计了6000多条垃圾评论,通过对这6000多垃圾评论IP的分析,去重之后大概350条不同的IP,然后我在nginx里面过滤了这些IP,cpu的占用立马就降了下来。看来全部都是垃圾评论惹的祸。

进一步对这350多个ip进行了分析,整了个php调用纯真IP整出了这些ip的地理位置,70%来着福建莆田市,接着就是美国。然后又精简了这些ip,改用ip段进行封杀。

百度了一下福建莆田市的wordpress垃圾评论,网上还不少,于是直接封掉。然后可能有误杀真实的福建莆田市的访客,不过也只能抱歉了,被封杀地区的ip是访问不了网站了。

这几天每天对还能进来的垃圾评论进行一次处理,加到封杀ip里面去,经过一周的处理,现在每天进入后台的垃圾评论越来越少了,服务器的负载也稳定了很多,对于这些可恶的垃圾评论,有本事你就用遍全球所有的ip,不然来一个封一个,下次你就进不来,对垃圾评论必须死磕到底。

可能是我网站进入很多了wordpress垃圾评论发布机器的名单里面了,之前用虚拟主机的时候,服务商就说了cpu占用异常的高,当时也没有想那么多,看来一直都是垃圾评论搞的鬼。

同时我也发现,通过php或者说插件来阻止垃圾评论,不是一个有效的方法,还是会加重服务器的负担的,还是得在服务器端进行屏蔽,虽然我说的这个方法容易有误杀,不过那也是没有办法的事情,得保证更多的人能够方便快速的打开,找到自己想要的内容。

本文固定链接: http://www.weisay.com/blog/wordpress-comment-spam-defense.html | 威言威语

WordPress垃圾评论防御记:目前有49 条评论

  1. avatar
    29楼
    noone Google Chrome  H60-L01 Build/HDH60-L01) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.84 Mobile Safari/537.36

    进来学习下

    2015-09-22 13:14 [回复]
  2. avatar
    28楼
    joshua Google Chrome Windows

    我用的万网的虚拟机,也是老是垃圾评论。。最后我选的办法就是该功能模版,屏蔽非中文的评论。。

    2015-08-15 00:57 [回复]
  3. avatar
    27楼
    xinwendashibaike Mozilla Firefox Mac OS

    1.不让那些ip访问你的网站,直接vps那边就封掉,应该可以设置防火墙吧?
    2.加验证码

    一个小时6000多条,应该不多吧?

    2015-01-19 13:01 [回复]
  4. avatar
    26楼
    李英杰 UC浏览器 Windows

    就用官方的,垃圾屏蔽几十万条。太多了,不过我没cpu这些担心,美国的虚拟主机,果然第三方评论,就没有了。

    2014-05-07 08:43 [回复]
  5. avatar
    25楼
    木易小匠 搜狗浏览器 Windows

    老大用的是vps么?

    2014-03-12 23:56 [回复]
  6. avatar
    24楼
    吴歌博客 Google Chrome Windows

    手工搞不过机器啊,这就是自动化的BUG。貌似让我想起游戏里的外挂一样。。哎

    2013-12-21 23:54 [回复]
  7. avatar
    23楼
    零下5度 Google Chrome Windows

    我的垃圾评论大部分也是来自福建莆田市!!原来大家都这样。

    2013-12-18 15:54 [回复]
  8. avatar
    22楼
    caipaocc Mozilla Firefox Windows

    我现在用Akismet,评论系统用多说评论,基本上杜绝了垃圾评论

    2013-12-16 17:52 [回复]
  9. avatar
    21楼
    zwwooooo Mozilla Firefox Windows

    再加上一个步骤效果又会好点:
    前提:你用 ajax 提交评论
    然后:把 WordPress 根目录的 wp-comments-post.php 删了或者改名

    哈哈哈……

    2013-12-14 20:55 [回复]
    • avatar
      William Mozilla Firefox Windows

      试过这个办法的,不错貌似还是能有大批量的垃圾评论,发表垃圾评论的程序看来升级了

      2013-12-16 16:58 [回复]
  10. avatar
    20楼
    菠萝 Google Chrome Windows

    能发一份你禁掉的ip段列表给我么,我也被莆田英文哥给烦死了,vps负载居高不下

    2013-12-05 22:59 [回复]
    • avatar
      William Mozilla Firefox Windows

      查看这篇文章:http://www.weisay.com/blog/linux-server-restrict-ip-method.html
      最后有我收集的垃圾评论IP下载。

      2013-12-06 10:01 [回复]
  11. avatar
    19楼
    掩耳 Mozilla Firefox Windows

    其实改用第三方评论系统,删除WP自带评论功能,问题解决

    2013-11-20 15:43 [回复]
  12. avatar
    18楼
    胡桃核 Internet Explorer Windows

    试过一个月下来博客垃圾评论过万,甚至有一个同在同一服务器上的另一个博客把服务器的负载超到了90%以上。后来加了验证码才消停了下。

    2013-11-19 14:16 [回复]
  13. avatar
    17楼
    君说 Google Chrome Windows

    受教了。

    2013-11-19 09:04 [回复]
  14. avatar
    16楼
    一堵墙 Google Chrome Windows

    第二段错误是 mySQL 吧。

    2013-11-15 20:56 [回复]
    • avatar
      William Mozilla Firefox Windows

      感谢提醒,已修正

      2013-11-16 18:24 [回复]
  15. avatar
    15楼
    92dress.com Mozilla Firefox Windows

    :shock: 用第三方评论插件吧,负载和垃圾评论问题交给他们处理。

    2013-11-13 22:28 [回复]
    • avatar
      William Mozilla Firefox Windows

      到真正没有一点办法的时候在用这样,还是喜欢折腾折腾 :???:

      2013-11-14 11:49 [回复]
  16. avatar
    14楼
    林肆 Google Chrome Windows

    还是小站好,没有这么多信息,哈哈!

    2013-11-13 03:28 [回复]
    • avatar
      William Mozilla Firefox Windows

      我站也不大,可能就是外链多了点 :wink:

      2013-11-13 13:52 [回复]
  17. avatar
    13楼
    Louis Han Mozilla Firefox Windows

    最近的spam已经防不胜防了

    2013-11-12 19:41 [回复]
    • avatar
      William Mozilla Firefox Windows

      连续折腾了好几个星期,还是通过屏蔽IP来的有效一些,虽然可能会有误拦。

      2013-11-13 13:51 [回复]
  18. avatar
    12楼
    xilouqingzhu 世界之窗浏览器 Windows

    一天下来起码两万垃圾评论,威哥大站点呀,像我小站一天就几十条而已。 :lol:

    2013-11-11 14:29 [回复]
    • avatar
      William Mozilla Firefox Windows

      被发垃圾评论的大站还差不多,现在屏蔽了很多垃圾评论的ip,垃圾评论少了很多了。

      2013-11-13 13:49 [回复]
  19. avatar
    11楼
    甜菜 搜狗浏览器 Windows

    我之前没几条正常评论到时有不少垃圾评论….现在不想弄网站了也没管….!

    2013-11-10 21:48 [回复]
  20. avatar
    10楼
    老谭 Internet Explorer Windows

    我一直在关注你这场持续几个星期的恶战,现在看来终于告捷了,恭喜恭喜~~

    2013-11-09 22:21 [回复]
    • avatar
      William Mozilla Firefox Windows

      这个算是持久战,目前算是战平吧,封掉了N多IP之后,周末一天没看竟然还能有近两万条垃圾评论,我很无奈。

      2013-11-10 23:23 [回复]
  21. avatar
    9楼
    Teddysun Maxthon Windows

    装插件Akismet;
    改名wp-comments-post.php;
    主题functions.php中添加函数,只允许带汉字的评论;

    这是我目前的做法。垃圾评论数量在可控状态了。

    2013-11-08 10:15 [回复]
    • 这样cpu的占用还是降不下来吧!

      2013-11-09 12:11 [回复]
    • avatar
      William Mozilla Firefox Windows

      这种方法很早之前就用了,虽然能过滤垃圾评论,但是服务器压力不减,有时候反而更加加剧服务器的压力,因为要不停的过滤。
      垃圾评论少点还行,多了就扛不住了。

      2013-11-10 23:21 [回复]
  22. avatar
    8楼
    于江水 Google Chrome Windows

    很不错的思路啊,学习了!

    2013-11-05 21:08 [回复]
  23. avatar
    7楼
    Jakes 枫树极速浏览器 Windows

    我的也是有一堆日文的垃圾评论,Akismet已经全部过滤,虽然博客访问少,但每次进后台都见到这些东西,够恶心的。

    2013-11-04 23:07 [回复]
    • avatar
      William Mozilla Firefox Windows

      恩,每次打开都能看到几百上千就更加不爽了。

      2013-11-10 23:23 [回复]
  24. avatar
    6楼
    Soar、毅 Google Chrome Windows

    试试多说,就再也不用担心评论造成的压力过大了。

    2013-11-04 18:39 [回复]
    • avatar
      William Mozilla Firefox Windows

      主要是我比较喜欢折腾,还是喜欢自己定义评论样式,如果真的无法抗住,就只能换了。

      2013-11-10 23:24 [回复]
  25. avatar
    5楼
    零度 世界之窗浏览器 Windows

    博主用的是阿里云的主机,好吧,你的主机肯定没有优化过,不然的话至少比现在块3倍以上

    2013-11-04 15:27 [回复]
    • avatar
      William Mozilla Firefox Windows

      服务器这方面绝对是纯小白用户,各种都在摸索中,求指导。

      2013-11-04 15:43 [回复]
  26. 博客太小,连垃圾评论都没有。

    感觉就像小规模的ddos

    2013-11-03 22:03 [回复]
    • avatar
      William 2345智能浏览器 Windows

      恩,比较像ddos,不停的post垃圾评论进来。没垃圾评论是种幸福。

      2013-11-04 15:01 [回复]
  27. avatar
    地板
    佐仔 Netscape Navigator iPhone

    你的可是名博,垃圾评论当然多,特别是主题带来的。但官方的插件很强大,足够使用。

    2013-11-03 20:04 [回复]
    • avatar
      William 2345智能浏览器 Windows

      名博肯定是算不上的,官方的那个插件只是帮你分辨垃圾评论,大量的垃圾评论就给数据库造成压力了。

      2013-11-04 15:00 [回复]
  28. avatar
    板凳
    Capbone Safari Mac OS

    我的Akismet每天也拦截好几百条… 求告知用IP屏蔽的具体办法…
    而且我的全是日文的…你说的蜂拥而至是归类到spam的还是直接在前台显示的?

    2013-11-03 17:51 [回复]
    • avatar
      William 2345智能浏览器 Windows

      只安装Akismet,垃圾评论就进spam了,然后,提取这些垃圾评论的ip,去重分析,然后加到封杀IP文件中,不同的服务器有不同的封杀方法,我有时间整理一下文章。

      2013-11-04 14:59 [回复]
  29. avatar
    沙发
    一只羊博客 Google Chrome Windows

    我靠,这么可怕,我最近每天都会删掉几条垃圾评论,都特码是日语。

    2013-11-03 17:41 [回复]
    • avatar
      William 2345智能浏览器 Windows

      几条算是极少了,按照我那个来说,一天下来起码两万垃圾评论。
      PS 友情链接已加。

      2013-11-04 14:34 [回复]

发表评论

question razz sad smile redface biggrin surprised eek confused cool lol mad rolleyes wink neutral cry

快捷键:Ctrl+Enter