- 前言
- 一、为什么需要传输压缩
- 二、什么场景使用传输压缩
- 三、怎么进行传输压缩
- 前提条件
- 测试验证
- 测试结果对比分析
- 四、尝鲜小妙招
前言
数据库应用场景复杂且多样,本文介绍金仓数据库在网络条件较差(小于10MB/s)场景,提供传输压缩特性进行性能提升。
一、为什么需要传输压缩
当应用需要并发查询大量结果集时,容易出现网络资源争用问题。造成服务端CPU空闲而网络繁忙的状况,因为大结果集需要占用非常多的网络带宽,从而导致网络带宽称为系统性能瓶颈。
针对这种场景kingbaseES提供了传输压缩特性,即利用数据库服务侧CPU资源,对查询的数据结果集进行压缩打包后再通过网络传输。减少网络资源排队,提高CPU在网络资源排队时利用率,从而提升整体查询性能。一共提供了0-9个压缩等级,0表示关闭压缩。数字越大表示压缩级别越高,压缩后的传输数据量越小,对应CPU消耗越高。
在应用需要并发查询大量结果集,跨网段传输,网络条件差时,建议使用传输压缩特性。kingbaseES传输压缩特性是针对在网络传输低于10MB/s场景进行使用。可以使用scp命令拷贝大文件测试网络传输速度,例如下场景(scp速率为450KB/s):
选取500条数据,5分钟并发查询,使用jmeter进行对比验证,使用传输压缩特性和不使用传输压缩特性性能验证。
前提条件-
配置kingbaseES数据库服务侧,传输压缩特性所需so环境变量
-
将数据库安装包中提供的“kingbase8-8.6.0.jar”包,拷贝至jmeter工具bin目录
-
将传输压缩jmeter工具所需so拷贝至jmeter的lib目录,并配置环境变量
步骤一:数据准备,500条测试数据,表结构及数据如下:
步骤二:配置jmeter压测JDBC参数,不使用传输压缩特性
jdbc:kingbase8://xxx.xxx.xxx.xxx:port/perf_test
步骤三:配置jmeter压测查询参数,40并发,循环查询3分钟
步骤四:运行jmeter压力测试脚本,观察数据库服务CPU及网络情况
-
数据库测
-
客户端段侧
步骤五:脚本执行完成后,查看“聚合报告”,jmete测试结果
步骤六:配置jmeter压测JDBC参数,使用传输压缩特性,并运行jmeter脚本
jdbc:kingbase8://xxx.xxx.xxx.xxx:port/perf_test?ziplevel=2
观察服务器和客户端侧CPU及网络情况 -
数据库侧
-
客户端侧
步骤七:查看数据库服务CPU及网络情况,脚本执行完成后,查看“聚合报告”数据,jmeter测试结果
是否压缩 | Samples | Average | 95% Line | Throughput | Received |
---|---|---|---|---|---|
不使用传输压缩 | 80 | 180042 | 197308 | 12.9/min | 1722.86 |
使用传输压缩 | 905 | 13420 | 15275 | 174.0/min | 23569.04 |
对比分析是否使用传输压缩特性测试两组测试数据,使用传输压缩比不使用传输压缩:
- 响应时间提升92.26%,吞吐率提升92.69%。
- 网络传输带宽未明显变化,CPU利用率增加90%左右。
- 可见在网络传输条件较差,而CPU比较空闲的场景。使用kingbase ES提供的传输压缩特性,查询性能会有较大幅度提升,可以有效解决在特殊场景下的性能问题。
如果您想先试一试kingbase ES提供的传输压缩功能,可以移步人大金仓官方网站下载V8R6版本数据库安装包并完成安装。然后按如下方式“制造”网络堵塞现场:
参考命令如下:
删除限速:
/sbin/tc qdisc del dev em1 root tbf rate 1mbit latency 50ms burst 30k
添加限速:
/sbin/tc qdisc add dev em1 root tbf rate 1mbit latency 50ms burst 30k #scp带宽约为12.5MB/s
/sbin/tc qdisc add dev em1 root tbf rate 512kbit latency 50ms burst 30k #scp带宽约为6MB/s
删除限速:
/sbin/tc qdisc del dev em1 root tbf rate 1mbit latency 50ms burst 30k
参数说明:
- burst :桶的大小,指定了最多可以有多少令牌能够即刻使用,若令牌数量不够可能会导致网口不可用,通过重启服务器解决。
- mbps和MB/s单位转换
Mbps(Mb/s):每秒传输的位数量(b:bit)
MB/s:每秒传输的字节数量(B:Byte)
1Byte=8bit,8Mbps=1MB/s
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)