java爬虫gecco的稳定性测试
程序员文章站
2022-05-05 12:53:35
...
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是支持代理服务器随机选取的。
推荐阅读
-
Java中==符号与equals()的使用详解(测试两个变量是否相等)
-
拒绝谎言,测试CPU的稳定性
-
java实现的根据概率随机中奖测试类
-
java单元测试框架都有哪些(单元测试框架的作用)
-
java单元测试框架都有哪些(单元测试框架的作用)
-
微信小程序授权 获取用户的openid和session_key【后端使用java语言编写】,我写的是get方式,目的是测试能否获取到微信服务器中的数据,后期我会写上post请求方式。
-
java测试框架的方法
-
java爬虫模拟登陆的实例详解
-
Java实现将png格式图片转换成jpg格式图片的方法【测试可用】
-
AS+Appium+Java+Win自动化测试之Appium的Java测试脚本封装(Android测试)