因为比较菜的原因,自从使用了VPS以后就一直使用宝塔面板来维护,而平时极少登录宝塔面板的。前段时间在折腾笔记软件,最后选定了思源笔记软件,因为思源笔记软件更新的频率真的非常快,也就随着思源笔记软件更新而登录宝塔进行更新。前天登录宝塔后台之后,无意之间发现我的这台篱落香港VPS的CPU占用情况有些异常,从40%-80%不停的波动从而导致VPS的负载有时能达到90%这样。
我的这台篱落香港VPSCPU是两核心、内存是4G的,而上面只放了两个博客、一个导航、一个思源笔记,这么高的配置对于这四个网站来说,真的是大牛拉小车。所以VPS一定遇到了什么问题。
还是第一句话,自己比较菜,便在中文微信群里请教。经过好几位大神的指点,最后“诊断”出结论是遇到了DataForSeoBot爬虫。给出解决方案的大神嘛我这里就不一一列举了,表示一并的感谢!我就简单整理出“诊断”及解决办法吧!
通过SSH链接VPS,使用top命令,top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。通过观察发现有一个名为“php-fmp”进程长期CPU占用居高不下,而对于这个进行CPU占用率过高的原因,一般情况下是服务器遇到了CC。一般CC攻击的情况下,服务器的流量会非常高,而我的VPS的流量基本上是正常的,所以排除了CC攻击。
这个时候查看服务器上每个网站的日志,终于发现了问题的所在。有一个IP,每隔4秒钟就会对我的老张博客进行一次GET数据,而且后面明确注明了一个bot.html网址。你打开这个网址之后,上面会有这个SemrushBot机器人的说明以及如何屏蔽的方法。
一般情况下有两种解决方法,首先是屏蔽IP的方法,通过宝塔面板的安全设置里的系统防火墙把该IP屏蔽掉,不过DataForSeoBot爬虫的IP并不是单一的,也不是某一IP段,所以屏蔽某一IP的方法只是暂时的。这个时候我们可以安排软件商店里安排第三方插件“Nginx免费防火墙 6.6”来把国外的IP都给屏蔽了。这样就会彻底解决问题了,但是如果你的网站真的有国外朋友访问的话,那也被拒之门外了。所以通过屏蔽IP的方法并不能够完美的解决问题。
1、robots.txt方法
User-agent: DataForSeoBot
Disallow: /
2、通过修改Nginx或其它WEB服务器规则禁止抓取
Nginx禁止DataForSeoBot爬虫规则如下:
if ($http_user_agent ~ "DataForSeoBot/1.0" )
{
return 403;
}
通过以上两种方法,就可以完美的解决问题了。这里需要说明下,不同的网络爬虫的名称可能不同,只需要DataForSeoBot替换掉就可以了。
唉,不过话又说回来了,篱落主机性能还是弱了,一个IP4秒一个GET就把CPU搞到了80%。