因磁盘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
相关推荐
小羊没烦恼!10 小时前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
俊昭喜喜里10 小时前
java中的继承和多态的区别
java
小羊没烦恼!10 小时前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
譕痕10 小时前
JSONObject与JSONArray封装数据格式区别
java·json
胡写代码11 小时前
别再前后端各写一套表单校验了
java·后端
小鱼能吃糖11 小时前
缺陷修复总览 · mall电商项目:5类缺陷,1个病根,4个业务域
java·电商
此时不提桶,更待何时11 小时前
01-06-A-JVM排查实战详解
java·jvm
这个DBA有点耶12 小时前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
vipxieliang12 小时前
ValidX 在 DDD 领域驱动设计中的实践
java·spring boot
DBA_G12 小时前
从地面到云霄:GBase数据库在民航三大场景的落地实践
数据库