AWS EBS卷疑似瓶颈:PostgreSQL数据仓库性能异常排查求助
排查方向建议
一、EC2实例层面验证
- 确认t3.2xlarge的EBS带宽与性能限制:t3属于突发性能实例,CPU积分耗尽时会降频,间接拖累IO表现。用
top观察CPU使用率,通过AWS CloudWatch查看CPUCreditBalance指标,若积分持续低位,可临时切换到m5.2xlarge这类固定性能实例做对比测试。 - 检查EBS优化状态:在AWS控制台实例详情页确认已启用EBS优化,或执行
curl http://169.254.169.254/latest/meta-data/ebs-optimized,返回true即为正常启用状态。
二、EBS卷性能裸测
- 脱离PostgreSQL做基准测试:停止数据库服务后,用
fio直接测试EBS卷的极限性能,排除数据库负载干扰。示例命令:
若测试结果仍达不到配置的8000 IOPS/200Mbps,直接提交AWS支持工单,排查EBS卷所在AZ的硬件配额或性能分配问题。# 随机读测试(模拟OLTP/数据仓库随机查询) fio --name=randread_test --ioengine=libaio --rw=randread --bs=4k --numjobs=8 --size=10G --iodepth=32 --runtime=60 --time_based --group_reporting # 顺序写测试(模拟批量数据加载) fio --name=seqwrite_test --ioengine=libaio --rw=write --bs=128k --numjobs=4 --size=10G --iodepth=16 --runtime=60 --time_based --group_reporting - 核对EBS CloudWatch指标:重点查看
VolumeQueueLength、VolumeReadOps、VolumeWriteOps、VolumeThroughput,对比配置参数,明确是实例端限制还是EBS端未达标。
三、Ubuntu系统配置排查
- 调整IO调度器:Ubuntu 18.04默认用
cfq调度器,对EBS更适配的是mq-deadline或none。执行cat /sys/block/<ebs-device>/queue/scheduler查看当前调度器,临时修改用echo mq-deadline > /sys/block/<ebs-device>/queue/scheduler;永久生效需在/etc/default/grub中添加GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=mq-deadline",然后执行update-grub并重启。 - 优化文件系统参数:若用ext4,确认挂载参数是否开启
noatime(减少元数据写入),关闭discard(TRIM可能影响EBS性能)。执行mount查看挂载信息,比如/dev/nvme1n1 on /pgdata type ext4 (rw,noatime,nodiscard)。 - 调整内核脏页参数:
vm.dirty_ratio和vm.dirty_background_ratio过高会导致批量刷盘堆积IO队列,建议临时调整测试:
永久生效写入sysctl -w vm.dirty_ratio=10 sysctl -w vm.dirty_background_ratio=5/etc/sysctl.conf后执行sysctl -p。
四、PostgreSQL内部负载分析
- 定位高IO SQL:启用
pg_stat_statements扩展,执行SELECT queryid, query, total_time, blk_read_time, blk_write_time FROM pg_stat_statements ORDER BY blk_read_time DESC LIMIT 10;,找出全表扫描、无索引查询等耗IO的语句。 - 优化PG配置参数:t3.2xlarge有32GB内存,
shared_buffers建议设为8GB左右;work_mem避免过大导致临时文件溢出;调整checkpoint_timeout和max_wal_size,减少频繁checkpoint引发的IO突增;核对wal_buffers大小,避免WAL频繁刷盘。
五、网络层面排除
- 检查网卡带宽占用:用
iftop或nload观察实时带宽,若网卡跑满(t3.2xlarge网卡上限10Gbps),会抢占EBS的IO资源(EBS流量走实例网卡)。 - 排查后台网络任务:确认是否有跨AZ数据同步、远程备份、日志推送等任务占用带宽,这些会间接限制EBS吞吐量。
内容的提问来源于stack exchange,提问作者Alexi Theodore
相关产品推荐
相关产品推荐

