研究实践 | 数据库防火墙系统性能测试参考
测试准备
测试类别
序号 | 测试类目 |
1 |
高负载下审计处理丢失率 |
2 | 高负载下策略告警审计丢失率 |
3 |
多条sql过多条策略每条策略对sql语句的影响 |
4 | 超长sql过多条策略每条策略对sql语句的影响 |
测试环境
服务端软硬件环境:
系统 | 处理器参数 | 配置 | 数据库版本 |
Centos 7 |
Intel(R) Xeon(R) CPU E3-1220 V2 @ 3.10GHz |
4核4g 40G硬盘 | mysql5.7 |
Windows Server 2012 R2 |
Intel® Xoen® CPU E5-2670 v2 @ 2.50GHz |
4核4g 40G硬盘 | Oracle 12c |
Windows 2008 R2 |
Intel® Xoen® CPU E5-2670 v2 @ 2.50GHz |
4核4g 40G硬盘 | Sql server 2012 |
数据库防火墙系统 | Intel(R) Xeon(R) CPU E3-1220 V2 @ 3.10GHz |
4核8g 500G硬盘 |
客户端软硬件环境:
系统 | 处理器参数 | 配置 | 测试工具 |
Windows 10 |
Intel® Core(TM) i5-4210M CPU @ 2.60GHz |
4核8G 500G硬盘 | 1.虚机版数据库性能测试工具(自研) 2.Jmeter |
网络拓扑图:
接入数据库防火墙系统后的测试环境网络结构图
测试指标
软件指标
硬件指标
测试工具及策略
测试结果
语句 |
并发用户数 |
单用户执行SQL条数 |
审计丢失率 |
语句1:insert into test values(1,’foo’,’10’,’male’) 语句2:update test set name = ’bar’ where id = 1 语句3:delete from test where age = 0 |
20 |
500 |
0 |
20 |
1000 |
0 |
|
20 |
10000 |
0 |
|
语句4:select id,name,sex,age from test(表大小500k) |
20 |
500 |
0 |
20 |
1000 |
0 |
|
20 |
10000 |
0 |
|
语句5:select * from MOCKDATA(表大小10m) |
20 |
500 |
0 |
20 |
1000 |
0 |
|
20 |
10000 |
0 |
语句 |
并发用户数 |
单用户执行SQL条数 |
告警条数/测试条数(%) |
审计丢失率(%) |
语句1:insert into test values(1,’foo’,’10’,’male’) 语句2:update test set name = ’bar’ where id = 1 语句3:delete from test where age = 0 |
20 |
500 |
100 |
0 |
20 |
1000 |
100 |
0 |
|
20 |
10000 |
100 |
0 |
|
语句4:select id,name,sex,age from test(表大小100k) |
20 |
500 |
100 |
0 |
20 |
1000 |
100 |
0 |
|
20 |
10000 |
100 |
0 |
|
语句5:select * from MOCKDATA(表大小10m) |
20 |
500 |
100 |
0 |
20 |
1000 |
100 |
0 |
|
20 |
10000 |
100 |
0 |
增删改语句 |
测试次数 |
响应时间(s) |
经过NGDAP对每条sql语句的影响(us) |
每条策略对每条sql语句的影响(us) |
|
无NGDAP |
500条insert语句 |
10 |
2.229637 |
||
未经过策略 |
500条insert语句 |
10 |
2.253291 |
47 |
|
经过策略 (50条) |
500条insert语句 |
10 |
2.347866 |
3.78 |
|
经过策略 (125条) |
500条insert语句 |
10 |
2.488195 |
3.75 |
|
无NGDAP |
1000条insert语句 |
10 |
4.257787 |
||
未经过策略 |
1000条insert语句 |
10 |
4.331429 |
73 |
|
经过策略(50条) |
1000条insert语句 |
10 |
4.480193 |
2.97 |
|
经过策略 (125条) |
1000条insert语句 |
10 |
4.686897 |
2.84 |
|
无NGDAP |
1500条insert语句 |
10 |
6.949762 |
||
未经过策略 |
1500条insert语句 |
10 |
7.113779 |
109 |
|
经过策略(50条) |
1500条insert语句 |
10 |
7.428970 |
4.20 |
|
经过策略(125条) |
1500条insert语句 |
10 |
7.733414 |
3.30 |
查询语句 |
次数 |
平均时间(s) |
经过设备对每条sql语句的影响(us) |
每条策略对每条sql语句的影响(us) |
||||
表空间100k |
表空间10m |
|||||||
无NGDAP |
500条select语句 |
10 |
1.282831 |
44.640803 |
||||
未经过策略 |
500条select语句 |
10 |
1.306056 |
46.732554 |
46 |
418 |
||
经过策略(50条) |
500条select语句 |
10 |
1.331296 |
47.337280 |
1 |
24.18 |
||
经过策略(125条) |
500条select语句 |
10 |
1.388015 |
48.722731 |
1.31 |
31.84 |
||
无NGDAP |
1000条select语句 |
10 |
2.354470 |
105.852258 |
||||
未经过策略 |
1000条select语句 |
10 |
2.385278 |
107.952276 |
31 |
610 |
||
经过策略(50条) |
1000条select语句 |
10 |
2.431258 |
109.218826 |
2.65 |
25.33 |
||
经过策略(125条) |
1000条select语句 |
10 |
2.518184 |
110.688709 |
1.06 |
21.89 |
||
无NGDAP |
1500条select语句 |
10 |
3.835029 |
176.396553 |
||||
未经过策略 |
1500条select语句 |
10 |
3.998377 |
180.328666 |
108 |
693 |
||
经过策略(50条) |
1500条select语句 |
10 |
4.040296 |
185.123962 |
0.55 |
63.93 |
||
经过策略(125条) |
1500条select语句 |
10 |
4.208166 |
189.914894 |
1.11 |
51.12 |
语句 |
执行语句次数 |
响应时间(ms) |
每条策略对每条sql语句的影响(us) |
|
无NGDAP |
超长1 |
20 |
516 | |
未经过策略 |
超长1 |
20 |
526 |
|
经过策略(50条) |
超长1 |
20 |
548 |
22 |
经过策略(125条) |
超长1 |
20 |
589 |
25 |
测试结论
1.数据库防火墙系统即使在串联方式下,也能友好支持在高并发高负载业务场景下的数据库SQL审计(测试的汉领信息NGDAP在串联高并发业务场景下的审计完整性100%)。
2.数据库防火墙系统在实验室环境下,串联进网络防护策略对业务交易SQL语句的延迟影响可达到微秒级别(测试的汉领信息NGDAP在串联时每条策略对SQL语句的影响在平均在50微秒级别)。
3.数据库防火墙系统对超长SQL语句的审计对其性能的影响很小(测试的汉领信息NGDAP支持对超长SQL语句等恶意语句的审计,超长SQL语句对其性能的影响较小)。