因磁盘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 分钟前
《基于SpringBoot的图书管理系统设计与实现》
java·spring boot·后端
小蒜学长11 分钟前
借助于大模型工具Cursor的中药材交易系统的设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端
Arvin62712 分钟前
SonarQube 扫描 Maven 项目编译错误
java·maven·sonar
lhldsg19 分钟前
宠物同城领养平台开发实战:从需求分析到上线部署指南
java·前端·小程序·需求分析·宠物
风萧萧199922 分钟前
JAVA :JSONObject转换为XML
xml·java·python
阿图灵23 分钟前
LangGraph 实战 03:Workflows 与 Agents——六种工作流模式与智能体实战(附 6 个可运行示例)
java·前端·javascript·工作流·ai agent·智能体·langgraph
程序员三明治29 分钟前
【体验毛坯房】Deep Harness 入门教程
java·人工智能·后端·大模型·llm·deepseek·dsh
zzzll111129 分钟前
深入理解 Java HashMap:从原理到实战
java·开发语言·哈希算法
猫猫不是喵喵.37 分钟前
Java开发高频面试题汇总(通俗易懂版)
java·开发语言·java高频面试
煮煮论英雄43 分钟前
单文件部署的MQTT轻量级物联网数据平台
jvm·物联网·oracle