鲲鹏社区首页
中文
注册
Greenplum数据库性能调优

Greenplum数据库性能调优

Greenplum

发表于 2025/04/17

0

作者|方原


测试内容

  gpcheckperf 是 Greenplum 数据库提供的一个性能测试工具,用于评估 Greenplum 数据库集群的性能。它执行一系列的性能测试,包括 CPU、内存、磁盘 I/O 等方面的测试,并生成详细的报告,帮助用户了解系统的性能状况和可能的瓶颈。通过分析 gpcheckperf 的报告,用户可以调整配置、优化性能,以提高 Greenplum 数据库集群的性能表现。

执行 gpcheckperf -f /data1/gpdb/hostfile -d 300s /data1/gpdb/master -B 16k -r ds -S 5GB –duration 测试脚本

根据官网介绍gpcheckperf命令测试的是主机的硬件性能,非数据库性能,主要是磁盘测试,从确定主要优化方向为磁盘IO。

性能目标: 性能达到850M-1600M

调优前数据: 性能为616M,距离客户要求的850M-1600M的要求有较大的差距

性能瓶颈分析

再次执行测试脚本,观察使用iostat观察磁盘性能, 

发现数据盘的使用率100%,并且写入延迟搞到10ms。可以发现io确为性能瓶颈

应用信息

软件名称

版本

说明

Greenplum

6.12.1

Greenplum数据库

  

调优实施

1. 搭建raid盘提高磁盘吞吐量

 搭建合适的raid可以提高磁盘性能,我们尝试了多种模式进行测试,数据如下:
raid类型

双系统盘raid1

单数据盘raid0

三数据盘raid0

四数据盘raid0

五数据盘raid10

测试结果

600M

200M

666M

853M

1009M

磁盘利用率

100%

100%

100%

100%

100%

 可以看到,搭建raid对于性能的提升是巨大的。与客户沟通后,确定采用全部12块数据盘搭建raid10作为最终搭建raid的手段。

2.  硬盘OS参数调优

  按照分析可以看见,磁盘利用率都为100%,说明性能瓶颈在磁盘。所以下面在OS层面对磁盘的各参数进行调优,目的是提高硬盘读写性能。

1)  硬盘内存缓存参数

vm.dirty_ratio表示脏页所占的百分比(相对于所有可用内存,即空闲内存页+可回收内存页)达到dirty_ratio时,write调用会唤醒内核的flusher线程开始回写脏页数据,直到脏页比例低于此值,write调用此时会阻塞,硬盘IO会暂停,一般默认20%。

当dirty_ratio过低时,会发生频繁的落盘操作,影响磁盘的IO性能,此时可以适当提高dirty_ratio的值,在本次调优中,经过多次测试,当dirty_ratio在60%~70%之间时,会有较高的IO性能,但过高的dirty_ratio会有丢失数据的风险,所以最终选择dirty_ratio为60%。

修改的步骤为:sysctl -w vm.dirty_background_ratio=60

2)  硬盘调度策略调整

硬盘的调度策略是指操作系统为了高效地管理磁盘I/O操作而采用的一系列方法和技术。这些策略决定了操作系统如何响应多个磁盘请求,以最小化寻道时间、旋转延迟和数据传输时间,从而提高磁盘访问效率。

在本次调优的服务器OS中,硬盘的调度策略有my-deadline,kyber,bfq和none四种,经过调优测试对比,当硬盘的调度策略为bfq时,系统有较高的IO性能。

修改步骤为:echo bfq > /sys/block/sdd/queue/scheduler

3)  IO调度队列调整

nr_requests表示请求的IO调度队列大小,默认128。nr_requests参数,可以提高系统的吞吐量,似乎越大越好,但是该请求队列的也不能过大,因为这样会消耗大量的内存空间。

所以,在本次优化中,适当提高nr_requests可以提高系统的吞吐量,但是不宜设置的过高。经调优测试,当nr_requests调整为原来的两倍时,系统可以获得较高的IO性能。

修改步骤为:echo 512 >/sys/block/sdd/queue/nr_requests


调优结果: 

调整dirty_ratio=60

调整scheduler=bfq

调整nr_requests=512

1264M

1302M

1442M

16%(对比1089M)

3%(对比1264M)

11%(对比1302M)