通过Apache CXF采集数据时单次请求的性能总结
1,简介
Apache CXF 是一个开放源代码框架,提供了用于方便地构建和开发 Web 服务的可靠基础架构。可以使用Apache CXF提供一些WebService服务。Apache CXF可以支持Soap和Rest协议。在实际项目中可以将Apache CXF通过Soap和Rest协议采集数据做为服务器端基础架构。
我们可以通过Rest和SOAP协议来采集数据。本篇文章主要研究的是通过SOAP协议传输数据,并将数据存储到数据库时,单次请求的数据瓶颈和优化方法。
2,性能测试
性能测试是在优化jdbc接口之后,使用大批量数据调用CXF框架的单次请求的性能。测试时单次存储11条数据(对应数据库中一张表的11列)。使用的是批量接口。
系统配置如下:
应用服务器:
1,cpu Intel(R)Xeon(R) CPU
2,内存 4G
3, 使用的是Tomcat服务器
数据库服务器:
1,cpu Intel(R)Xeon(R) CPU
2,内存 4G
3, 使用的是mysql数据库
进行批量测试的性能指标如下:
插入条数 |
使用时间(ms) |
服务器内存消耗 |
数据库服务器内存消耗 |
碰到问题 |
1000 |
234 |
| ||
10000 |
1552 |
15.2% |
10.6% |
|
20000 |
2988 |
15.2% |
10.6% |
|
30000 |
4462 |
15.2% |
10.6% |
|
40000 |
6353 |
15.2% |
10.6% |
|
50000 |
|
|
|
超出最大范围 |
60000 |
|
|
|
|
3,性能优化
调整后单次插入3万条收到成功信息后继续发送,性能测试如下:
插入条数 |
使用时间(ms) |
服务器内存消耗 |
数据库服务器内存消耗 |
碰到问题 |
30000 |
4745 |
15.1% |
10.6% |
|
60000 |
9619 |
15.2% |
10.6% |
|
90000 |
13996 |
15.1% |
11.1% |
|
120000 |
19955 |
15.3% |
9.7% |
|
150000 |
24116 |
15.3% |
9.7% |
|
180000 |
28803 |
16.2% |
9.6% |
|
210000 |
34582 |
16.2% |
9.7% |
|
240000 |
39197 |
16.2% |
9.7% |
|
270000 |
43431 |
15.9% |
9.7% |
|
300000 |
49849 |
15.9% |
9.7% |
|
600000 |
104182(1.73min) |
16.0% |
9.7% |
|
900000 |
229348(3.82min) |
16.2% |
9.7% |
|
1200000 |
514626(8.5771min) |
16.1% |
9.7% |
|
1500000 |
894118(14.9min) |
16.3% |
9.6% |
|
|
|
|
|
|
4,总结
Cxf在做大量数据采集的时候,需要考虑的几个地方:
1, 单笔上传数据的极限是5万条,超出5万条会出错,调用cxf接口的厂商要注意这个点。
2, 使用cxf采集数据15分钟内单次上传在服务器性能一般的情况下,单次上传的上限大概是150万条左右。
3, 在数据库的数据量增大的情况下,上传速度会逐渐减慢。