通过ftp采集文件的性能总结

通过ftp采集文件数据的性能总结

1,简介

在数据采集的过程中,使用excel或csv的格式将数据上传到服务器上,再通过Java的文件操作和流操作,获取上传文件的信息,最后通过CSVReader读取上传的文件信息,最后通过jdbc接口将文件信息存储到数据库中。

本篇文章主要研究在使用java的各种开源框架采集ftp上传的数据时,如何可以快速的上传数据,同时保证比较少的系统资源的消耗。


2,性能测试

         性能测试是在优化jdbc接口之后,使用大批量数据测试扫描存储文件的性能。测试时单次存储5条数据。使用的是批量接口。

         系统配置如下:

应用服务器:

1,  cpu inteli3

2,  内存 8G

数据库服务器:

1,cpu Intel(R)Xeon(R) CPU

2,内存 4G

3,  使用的是mysql数据库

进行批量测试的性能指标如下:

插入条数

使用时间(ms)

服务器内存消耗

数据库服务器内存消耗

碰到问题

100

833

35.5M

15.7%

 

1000

3971

54.5M

15.7%

 

10000

13399

111.5M

15.7%

 

20000

19639

154M

15.7%

 

30000

27308

188M

14.7%

 

100000

90039 (1.5min)

453M

15.7%

 

200000

204598(3.4min)

847M

15.7%

 

300000

295438(4.9min)

1014M

15.7%

 

400000

1093927(18.2min)

1292M

15.7%

 

500000

1570964(26.2min)

1433M

15.7%

 

600000

1668328(27.8min)

1780M

15.7%

 

700000

2372982(39.5min)

1855M

15.7%

 

800000

2865081(47.8min)

2015M

15.7%

 

900000

3584745(59.7min)

2129M

15.7%

单笔90万条消耗时间比较长

1000000

 

2095M

 

java.lang.OutOfMemoryError: GC overhead limit exceeded

3,优化方案1

将数组获取到的数据,在插入数据库时,单次批量插入10000。测试结果如下。

插入条数

使用时间(ms)

服务器内存消耗

数据库服务器内存消耗

碰到问题

100

833

35.5M

15.7%

 

1000

3971

54.5M

15.7%

 

10000

13399

111.5M

15.7%

 

20000

22684

157M

15.7%

 

30000

30716

208M

15.7%

 

100000

95958(1.5min)

463M

15.7%

 

200000

180388 (3.0min)

384M

15.7%

 

300000

275388 (4.5min)

420M

15.7%

 

400000

377242 (6.28min)

505M

15.7%

 

500000

527830(8.8min)

552M

15.7%

 

600000

588103(9.8min)

726M

15.7%

 

700000

723151(12.1min)

880M

15.7%

 

800000

901322(15.0min)

850M

15.7%

 

900000

1113462(18.6min)

928M

15.7%

 

1000000

1325419(22.0min)

806M

15.7%

 

1500000

2179144(36.3min)

1097M

15.7%

 

2000000

3569986(59.5min)

1562M

15.7%

 

3000000

 

 

 

 

 

4,优化方案2

采用Java流机制,在插入数据库时,单次批量插入10000。测试结果如下。

插入条数

使用时间(ms)

服务器内存消耗

数据库服务器内存消耗

碰到问题

100

273

40.4M

15.8%

 

1000

1236

51.4M

15.8%

 

10000

9645

91.5M

15.8%

 

20000

21685

134M

15.8%

 

30000

27509

201M

15.8%

 

100000

89067(1.5min)

198M

15.8%

 

200000

175856(2.9min)

186M

15.8%

 

300000

265390(4.4min)

196M

15.8%

 

400000

356549(5.9min)

202M

15.8%

 

500000

453659(7.6min)

202M

15.8%

 

600000

576562(9.6min)

199M

15.8%

 

700000

730090(12.2min)

200M

15.8%

 

800000

769520(12.8min)

200M

15.8%

 

900000

1124001(18.7min)

209M

15.8%

 

1000000

1341186(22.4min)

202M

15.8%

 

1500000

2566401(42.8min)

204M

15.8%

 

2000000

 

 

 

 

 

5,优化方案3

减少创建对象,优化程序。测试结果如下。

插入条数

使用时间(ms)

服务器内存消耗

数据库服务器内存消耗

碰到问题

10000

10022

99.6M

15.8%

 

100000

88925(1.5min)

203M

15.8%

 

500000

444200(7.4min)

201M

15.8%

 

1000000

1327358(22.1min)

202M

15.8%

 

1500000

2588956(43.1min)

202M

15.8%

 

2000000

 

 

 

 

 

6,总结

         通过ftp机制采集数据,在数据量比较大的情况下,有两条优化思路,一条是使用批量插入时控制好批量插入单次的条数。第二条是最好使用底层的机制,开源软件有时在设计时考虑的东西太多,会增加系统的资源消耗。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值