因磁盘IO性能低导致程序An I/O error 报错

文章目录

环境

系统平台:UOS(鲲鹏)

版本:4.5.8

症状

1、程序出现如下报错:

复制代码
1、An I/O error occurred while sending to the backend
2、JDBC rollback;This connection has been closed.;nested exception is
com.highgo.jdbc.util.PSQLException:This connection has beenclosed.

问题原因

1、经过了解,程序查询一张2000万的表,只要操作的人多了就会出现相关报错;

2、数据库运行在机械盘上,vmstat对服务器磁盘进行监控输出信息如下:

vmstat监控,b列等待I/O的阻塞进程数过多,考虑机械盘升级固态。

解决方案

1、与客户讨论提供如下解决方案

方案1:2千万的表进行拆表。

方案2:升级磁盘硬件配置

方案3:读写分离(提升多大,是否满足需求,有待验证)

2、客户决定采用升级磁盘硬件解决

3、测试新升级磁盘正常

01、fio随机写

复制代码
fio -direct=1 -iodepth=128 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=/hgdata/testdir/fiotestfile -name=Rand_Write_Testing

02、fio随机读

复制代码
fio -direct=1 -iodepth=128 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=/hgdata/testdir/fiotestfile -name=Rand_read_Testing

03、dd测速8kb读写

复制代码
写测速:
time dd if=/dev/zero of=output1.file bs=8k count=128000 oflag=direct,nonblock
读测速:
time dd if=output1.file of=/dev/null bs=8k count=128000 iflag=direct,nonblock

04、dd小文件写(不满足20MB/s磁盘性能不达标)

复制代码
dd if=/dev/zero of=/hgdata/testio1 bs=32k count=20k oflag=dsync

05、dd大文件写(不满足200MB/s磁盘性能不达标)

复制代码
dd if=/dev/zero of=/hgdata/testio2 bs=8192k count=100 oflag=dsync
相关推荐
Zane19946 小时前
单例线程安全、生产者消费者、死锁:并发面试三连问串讲
java·后端
少晓年6 小时前
从 MySQL 迁移到人大金仓 KingbaseES:完整指南与实践
数据库·mysql
云烟成雨TD7 小时前
Micrometer 系列【42】链路追踪:Span 体系 | 核心 API
java·链路追踪·micrometer
SelectDB7 小时前
Apache Doris AI RAG 实战:从基础 RAG 到知识图谱增强的技术能力与选型
数据库
Gorway7 小时前
理解 Spring 依赖注入:从构造器注入到集合与条件 Bean
java·后端
SelectDB7 小时前
电商企业 PostgreSQL 迁移 Apache Doris:80TB 分析数据统一平台技术能力与实践
数据库
LiLiYuan.7 小时前
【字符串常量池】
java·开发语言·面试
SelectDB7 小时前
阶跃星辰 Agent 可观测:Apache Doris / SelectDB 的技术能力与实践
数据库
SelectDB7 小时前
ApacheDoris Iceberg V3 湖仓 DML:Apache Doris / SelectDB 的技术能力与实践
数据库
SelectDB7 小时前
ApacheDoris Python UDF:SQL 调用 Python 的技术能力、选型对比与实践
数据库