最近一段时间,服务器的负载一直高的吓人,对于目前我这个低配的阿里云服务器来说,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或者说插件来阻止垃圾评论,不是一个有效的方法,还是会加重服务器的负担的,还是得在服务器端进行屏蔽,虽然我说的这个方法容易有误杀,不过那也是没有办法的事情,得保证更多的人能够方便快速的打开,找到自己想要的内容。
进来学习下
我用的万网的虚拟机,也是老是垃圾评论。。最后我选的办法就是该功能模版,屏蔽非中文的评论。。
1.不让那些ip访问你的网站,直接vps那边就封掉,应该可以设置防火墙吧?
2.加验证码
一个小时6000多条,应该不多吧?
就用官方的,垃圾屏蔽几十万条。太多了,不过我没cpu这些担心,美国的虚拟主机,果然第三方评论,就没有了。
老大用的是vps么?
@木易小匠用的阿里云主机
@William哦,阿里云这么高端啊~