java爬蟲gecco的穩定性測試
最近對開源的java爬蟲Gecco做了一個穩定性測試,測試環境:一臺爬蟲+web應用服務器,一臺mongodb服務器。服務器配置很low,兩臺都是阿里雲最低端的主機,1核+512內存。
單線程測試場景
爬蟲採用單線程,測試時間3×24小時,測試期間系統無異常,jvm內存穩定。測試結果:
-
基本信息
Interval: 5000, StartTime: "2016-03-22 14:47:40", ThreadCount: 1, StarUrlCount: 8
單線程,共有8個初始抓取鏈接,每個請求抓取完成後休息5秒。
-
爬蟲監控數據
taocan.ctrip.com Statistics: "{"exception":134,"serverError":0,"success":11270}" vacations.ctrip.com Statistics: "{"exception":61,"serverError":0,"success":17548}" huodong.ctrip.com Statistics: "{"exception":42,"serverError":0,"success":11814}" www.tuniu.com Statistics: "{"exception":4,"serverError":0,"success":228}" temai.tuniu.com Statistics: "{"exception":78,"serverError":0,"success":3507}" www.lvmama.com Statistics: "{"exception":0,"serverError":415,"success":41}" http://www.lvmama.com/tuangou/sale-623250 DOWNLOAD ERROR :500 http://www.lvmama.com/tuangou/sale-612687 DOWNLOAD ERROR :400
- 結果
從監控數據可以看到:
ctrip.com相關的數據抓取成功率較高,爲99.99%,出現的失敗都是exception,也就是類似超時之類的錯誤。
tuniu.com相關的數據抓取成功率也較高,爲99.97%,出現的失敗也是exception。
lvmama.com的成功率就十分低了,而且返回都是serverError也就是服務器500或者400錯誤,查看發日誌發現可能對方服務器對ip做了訪問限制,在成功抓取10多條後就一直報400或者500錯誤。
多線程測試場景
爬蟲採用3線程,測試時間2×24小時,測試期間系統無異常,jvm內存穩定。測試結果:
-
基本信息
Interval: 5000, StartTime: "2016-03-26 11:16:57", ThreadCount: 3, StarUrlCount: 8
3線程,共有8個初始抓取鏈接,每個請求抓取完成後休息5秒。
-
爬蟲監控數據
taocan.ctrip.com Statistics: "{"exception":58,"serverError":0,"success":19306}" vacations.ctrip.com Statistics: "{"exception":51,"serverError":0,"success":31402}" huodong.ctrip.com Statistics: "{"exception":62,"serverError":0,"success":17807}" www.tuniu.com Statistics: "{"exception":2,"serverError":0,"success":466}" temai.tuniu.com Statistics: "{"exception":118,"serverError":0,"success":5603}" www.lvmama.com Statistics: "{"exception":1,"serverError":410,"success":39}" http://www.lvmama.com/tuangou/deal-580212 DOWNLOAD ERROR :400
-
結果
從監控數據可以看到和單線程結果基本一致
總結
從測試中可以發現,開源java爬蟲Gecco對系統要求很低,體現其輕量化的特點。無論在單線程還是多線程環境下,系統均能穩定運行。對部分網站訪問限制的問題,需要通過代理服務器來完成,Gecco是支持代理服務器隨機選取的。