有一个客户反映自己的网站时不时的不能访问或者是打开很慢,重启服务器或者服务后能正常访问一段时间,之后又会出现问题。首先查看服务器的情况,这台服务器是nginx+phpfpm的架构,top查看服务器负载不高,打开nginx的debug日志,看到有很多YisouSipder的访问日志,初步筛选了一下30%的记录都是他的,加上其他的爬虫记录,真正的用户访问量很少,明显就被YisouSipder拖累的。

    按照网上的解决方法,我们在nginx配置里面加上

 if ($http_user_agent ~* "YisouSpider") {
        return 403;
     }

意思是只要是user_agent为YisouSpider的访问我们都返回403错误,测试一下

curl -I -A "YisouSpider" http://localhost

如果返回403错误,代表你已成功了。(其实这样我感觉还是不能彻底解决问题!!)

然而查看日志发现还是会有他的访问记录,想想其实他就是访问的时候占用了phpcgi进程,我把phpfpm的进程数配置多些是不是能解决问题,我把phpfpm的pm.max_children = 20,重启服务,运行了2个小时没有大的问题,时不时有卡顿的情况但是比以前好多了,暂时就这样吧。

最后吐槽一下yisouspider,真是流氓,根本不理robots.txt,我已经在robots.txt里禁止他爬我的网站了还是进来!!!