关于Minio性能优化 A timeout exceeded while waiting to proceed with the request, please reduce your request

本文主要是介绍关于Minio性能优化 A timeout exceeded while waiting to proceed with the request, please reduce your request,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

因生产环境数据量和并发量过大,Minio会出现上传超时问题

具体报错:A timeout exceeded while waiting to proceed with the request, please reduce your request

经查阅资料,有4种解决方案

查阅文献:
https://www.oomake.com/question/17229356
https://www.nuomiphp.com/t/6254af8578e87f77ee3d038c.html
https://www.hxstrive.com/subject/minio/673.htm
https://github.com/minio/minio/tree/master/docs/config#api
https://blog.csdn.net/qq_62982856/article/details/128995909

1.检查Minio代码,有使用到流的地方需要及时关闭流
  • 手动关闭
try {           // 获取输入流InputStream inputStream = minioClient.getObject(GetObjectArgs.builder().bucket(bucket).object(filePath).build());// 关闭流inputStream.close();         
} catch (Exception e) {e.printStackTrace();
}
  • 使用try catch自动关闭流
try (InputStream input = downloadFileStream(fileName);ByteArrayOutputStream bos = new ByteArrayOutputStream()){//缓存byte[] b = new byte[1024];int n;while ((n = input.read(b)) != -1) {bos.write(b, 0, n);}//改变为byte[]return bos.toByteArray();
}catch (Exception e) {log.error("Minio出错",e);
}
2.检查Minio存储目录

部署单机版Minio时,假设你文件存放的目录为 a/,不要放太多的 object ,应该分开放
比如以日期,或者文件 hash 取几位建目录再把 object 放进去
因为单机版存在这样一个问题,就是如果一个文件夹 a/下面有多个 object ,你 100 万个全放 a/下面,list 性能会非常低,单机版似乎是以源文件方式直接存到磁盘的

3.部署Minio集群

集群要求:至少4个Minio服务

  • 4台机器,每一台机器一个Minio,每一个Minio指定当前机器硬盘

或其它组合方式部署Minio集群,部署Minio集群前先百度一下部署集群的要求

4.优化Minio配置参数
  • docker可以设置Minio环境变量来设置Minio配置
环境变量单位说明
MINIO_API_REQUESTS_MAXnumberset the maximum number of concurrent requests (default: ‘0’)
MINIO_API_REQUESTS_DEADLINEdurationset the deadline for API requests waiting to be processed (default: ‘10s’)
MINIO_API_CLUSTER_DEADLINEdurationset the deadline for cluster readiness check (default: ‘10s’)
MINIO_API_CORS_ALLOW_ORIGINcsvset comma separated list of origins allowed for CORS requests (default: ‘*’)
MINIO_API_REMOTE_TRANSPORT_DEADLINEdurationset the deadline for API requests on remote transports while proxying between federated instances e.g. “2h” (default: ‘2h’)
MINIO_API_LIST_QUORUMstringset the acceptable quorum expected for list operations e.g. “optimal”, “reduced”, “disk”, “strict” (default: ‘strict’)
MINIO_API_REPLICATION_PRIORITYstringset replication priority (default: ‘auto’)
MINIO_API_TRANSITION_WORKERSnumberset the number of transition workers (default: ‘100’)
MINIO_API_STALE_UPLOADS_EXPIRYdurationset to expire stale multipart uploads older than this values (default: ‘24h’)
MINIO_API_STALE_UPLOADS_CLEANUP_INTERVALdurationset to change intervals when stale multipart uploads are expired (default: ‘6h’)
MINIO_API_DELETE_CLEANUP_INTERVALdurationset to change intervals when deleted objects are permanently deleted from “.trash” folder (default: ‘5m’)
MINIO_API_DISABLE_ODIRECTbooleanset to disable O_DIRECT for reads under special conditions. NOTE: it is not recommended to disable O_DIRECT without prior testing. (default: ‘off’)

MINIO_API_REQUESTS_DEADLINE 和 MINIO_API_STALE_UPLOADS_EXPIRY 是我此次优化的环境变量

docker-compose配置

  • 通过设置config.josn文件设置Minio配置
    参考:https://github.com/minio/minio/tree/master/docs/config#api

这篇关于关于Minio性能优化 A timeout exceeded while waiting to proceed with the request, please reduce your request的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/273763

相关文章

Zabbix在MySQL性能监控方面的运用及最佳实践记录

《Zabbix在MySQL性能监控方面的运用及最佳实践记录》Zabbix通过自定义脚本和内置模板监控MySQL核心指标(连接、查询、资源、复制),支持自动发现多实例及告警通知,结合可视化仪表盘,可有效... 目录一、核心监控指标及配置1. 关键监控指标示例2. 配置方法二、自动发现与多实例管理1. 实践步骤

MySQL深分页进行性能优化的常见方法

《MySQL深分页进行性能优化的常见方法》在Web应用中,分页查询是数据库操作中的常见需求,然而,在面对大型数据集时,深分页(deeppagination)却成为了性能优化的一个挑战,在本文中,我们将... 目录引言:深分页,真的只是“翻页慢”那么简单吗?一、背景介绍二、深分页的性能问题三、业务场景分析四、

Linux进程CPU绑定优化与实践过程

《Linux进程CPU绑定优化与实践过程》Linux支持进程绑定至特定CPU核心,通过sched_setaffinity系统调用和taskset工具实现,优化缓存效率与上下文切换,提升多核计算性能,适... 目录1. 多核处理器及并行计算概念1.1 多核处理器架构概述1.2 并行计算的含义及重要性1.3 并

SpringBoot3.X 整合 MinIO 存储原生方案

《SpringBoot3.X整合MinIO存储原生方案》本文详细介绍了SpringBoot3.X整合MinIO的原生方案,从环境搭建到核心功能实现,涵盖了文件上传、下载、删除等常用操作,并补充了... 目录SpringBoot3.X整合MinIO存储原生方案:从环境搭建到实战开发一、前言:为什么选择MinI

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

MyBatisPlus如何优化千万级数据的CRUD

《MyBatisPlus如何优化千万级数据的CRUD》最近负责的一个项目,数据库表量级破千万,每次执行CRUD都像走钢丝,稍有不慎就引起数据库报警,本文就结合这个项目的实战经验,聊聊MyBatisPl... 目录背景一、MyBATis Plus 简介二、千万级数据的挑战三、优化 CRUD 的关键策略1. 查

SpringBoot排查和解决JSON解析错误(400 Bad Request)的方法

《SpringBoot排查和解决JSON解析错误(400BadRequest)的方法》在开发SpringBootRESTfulAPI时,客户端与服务端的数据交互通常使用JSON格式,然而,JSON... 目录问题背景1. 问题描述2. 错误分析解决方案1. 手动重新输入jsON2. 使用工具清理JSON3.

JVisualVM之Java性能监控与调优利器详解

《JVisualVM之Java性能监控与调优利器详解》本文将详细介绍JVisualVM的使用方法,并结合实际案例展示如何利用它进行性能调优,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录1. JVisualVM简介2. JVisualVM的安装与启动2.1 启动JVisualVM2

解决mysql插入数据锁等待超时报错:Lock wait timeout exceeded;try restarting transaction

《解决mysql插入数据锁等待超时报错:Lockwaittimeoutexceeded;tryrestartingtransaction》:本文主要介绍解决mysql插入数据锁等待超时报... 目录报错信息解决办法1、数据库中执行如下sql2、再到 INNODB_TRX 事务表中查看总结报错信息Lock