有一個客戶反映本身的網站時不時的不能訪問或者是打開很慢,重啓服務器或者服務後能正常訪問一段時間,以後又會出現問題。首先查看服務器的狀況,這臺服務器是nginx+phpfpm的架構,top查看服務器負載不高,打開nginx的debug日誌,看到有不少YisouSipder的訪問日誌,初步篩選了一下30%的記錄都是他的,加上其餘的爬蟲記錄,真正的用戶訪問量不多,明顯就被YisouSipder拖累的。php
按照網上的解決方法,咱們在nginx配置裏面加上nginx
if ($http_user_agent ~* "YisouSpider") { return 403; }
意思是隻要是user_agent爲YisouSpider的訪問咱們都返回403錯誤,測試一下bash
curl -I -A "YisouSpider" http://localhost
若是返回403錯誤,表明你已成功了。(其實這樣我感受仍是不能完全解決問題!!)服務器
然而查看日誌發現仍是會有他的訪問記錄,想一想其實他就是訪問的時候佔用了phpcgi進程,我把phpfpm的進程數配置多些是否是能解決問題,我把phpfpm的pm.max_children = 20,重啓服務,運行了2個小時沒有大的問題,時不時有卡頓的狀況可是比之前好多了,暫時就這樣吧。架構
最後吐槽一下yisouspider,真是流氓,根本不理robots.txt,我已經在robots.txt裏禁止他爬個人網站了仍是進來!!!curl