A timeout exceeded while waiting to proceed with the request, please reduce your request rate【已解决】

2023-10-24 07:50

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

文章目录

  • 1.问题描述
  • 2.问题分析
  • 3.问题解决

1.问题描述

image-20230212152812038

2.问题分析

报错消息:A timeout exceeded while waiting to proceed with the request, please reduce your request rate

等待处理请求时超时,请降低请求速率。

实际项目中报该错误后,响应了 503 ,还会导致后面对minio的操作全部超时卡住,登录到minio的控制台时也无法打开与加载桶中的文件信息,提示超时错误。

1️⃣ 首先我考虑是不是请求过于频繁的原因,于是在每次对 minio 进行操作前加了500ms休眠,然后再进行请求,但依旧报该错误。说明不是请求频繁的原因。

2️⃣ 后来在报该错误后,我将项目停止运行,发现minio控制台又可以访问了。这时候我就意识到应该是项目中对minio的操作完成后一直挤占了资源,没有关闭流,导致minio由于这些操作一直与项目保持了多个连接。

于是我抽取出项目出错位置的核心代码进行测试:

import io.minio.GetObjectArgs;
import io.minio.MinioClient;import java.io.InputStream;/*** @author 狐狸半面添* @create 2023-02-12 15:06*/
public class MinioDemo {public static void main(String[] args) throws Exception {// Create a minioClient with the MinIO server playground, its access key and secret key.MinioClient minioClient =MinioClient.builder()// 指定连接的ip和端口.endpoint("http://192.168.65.130:9000")// 指定 访问秘钥(也称用户id) 和 私有秘钥(也称密码).credentials("minioadmin", "minioadmin").build();// 获取桶String bucket = "waveedu";// 指定获取文件的路径String filePath = "林屿森LIN - 小幸运【吉他】 (伴奏).mp3";try {//=======================================================================for (int i = 1; i < 100; i++) {// 获取输入流InputStream inputStream = minioClient.getObject(GetObjectArgs.builder().bucket(bucket).object(filePath).build());System.out.println("第 " + i + " 次请求完毕");}//=======================================================================} catch (Exception e) {System.out.println(e.getMessage());e.printStackTrace();}}
}

果不其然,在循环十二次后卡主,应该是由于前十二次循环没有关闭流,导致minio资源一直被占用,第十三次请求获取输入流超时了。

image-20230212154729520

3.问题解决

通过这个demo就说明了关闭流的重要性,我们修改代码加入对流的关闭再进行测试:

import io.minio.GetObjectArgs;
import io.minio.MinioClient;import java.io.InputStream;/*** @author 狐狸半面添* @create 2023-02-12 15:06*/
public class MinioDemo {public static void main(String[] args) throws Exception {// Create a minioClient with the MinIO server playground, its access key and secret key.MinioClient minioClient =MinioClient.builder()// 指定连接的ip和端口.endpoint("http://192.168.65.130:9000")// 指定 访问秘钥(也称用户id) 和 私有秘钥(也称密码).credentials("minioadmin", "minioadmin").build();// 获取桶String bucket = "waveedu";// 指定获取文件的路径String filePath = "林屿森LIN - 小幸运【吉他】 (伴奏).mp3";try {//=======================================================================for (int i = 1; i < 100; i++) {// 获取输入流InputStream inputStream = minioClient.getObject(GetObjectArgs.builder().bucket(bucket).object(filePath).build());// 关闭流inputStream.close();System.out.println("第 " + i + " 次请求完毕");}//=======================================================================} catch (Exception e) {System.out.println(e.getMessage());e.printStackTrace();}}
}

这时候就没有问题了,能够正常全部循环完。

因此如果你遇到了这个报错,一定要仔细检查自己的代码中是否将所有与外界交互的流及时关闭,一定要自己去手动关闭,而不是等它自己关闭!!!

当我们用了虚拟机以外的资源,比如端口、显存、文件的时候(访问本地资源),超出了虚拟机能够释放资源的界限,这时候虚拟机并不能通过垃圾回收机制对你占用的资源进行释放,如果在没有关闭的情况下第一次运行程序是不会发生问题的,但是随着资源占有量逐渐增多而你又不自己进行close释放资源的话,垃圾只会越积越多,导致系统无法存储其他的资源,甚至会导致系统崩溃。如果你再次对未关闭流的文件进行读写,编译就会报错,告诉你这个文件被占用。

这篇关于A timeout exceeded while waiting to proceed with the request, please reduce your request rate【已解决】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

MybatisPlus 多数据源切换@DS注解失效问题解决

《MybatisPlus多数据源切换@DS注解失效问题解决》在业务开发中使用到了多数据源,遇到了@DS注解失效问题,有两个场景使用到同一个@DS的查询方法,下面就来介绍一下该问题的解决,感兴趣的可以... 在业务开发中使用到了多数据源,遇到了@DS注解失效问题,有两个场景使用到同一个@DS的查询方法,一个正

Centos7 firewall和docker冲突问题及解决过程

《Centos7firewall和docker冲突问题及解决过程》本文描述了一个在CentOS7上使用firewalld和Docker容器的问题,当firewalld启动或重启时,会从iptable... 目录系统环境问题描述问题排查解决办法总结本文只是我对问题的记录,只能用作参考,不能China编程说明问题,请

JAVA Calendar设置上个月时,日期不存在或错误提示问题及解决

《JAVACalendar设置上个月时,日期不存在或错误提示问题及解决》在使用Java的Calendar类设置上个月的日期时,如果遇到不存在的日期(如4月31日),默认会自动调整到下个月的相应日期(... 目录Java Calendar设置上个月时,日期不存在或错误提示java进行日期计算时如果出现不存在的

Nginx错误拦截转发 error_page的问题解决

《Nginx错误拦截转发error_page的问题解决》Nginx通过配置错误页面和请求处理机制,可以在请求失败时展示自定义错误页面,提升用户体验,下面就来介绍一下Nginx错误拦截转发error_... 目录1. 准备自定义错误页面2. 配置 Nginx 错误页面基础配置示例:3. 关键配置说明4. 生效

Java调用DeepSeek API的8个高频坑与解决方法

《Java调用DeepSeekAPI的8个高频坑与解决方法》现在大模型开发特别火,DeepSeek因为中文理解好、反应快、还便宜,不少Java开发者都用它,本文整理了最常踩的8个坑,希望对... 目录引言一、坑 1:Token 过期未处理,鉴权异常引发服务中断问题本质典型错误代码解决方案:实现 Token

springboot3.x使用@NacosValue无法获取配置信息的解决过程

《springboot3.x使用@NacosValue无法获取配置信息的解决过程》在SpringBoot3.x中升级Nacos依赖后,使用@NacosValue无法动态获取配置,通过引入SpringC... 目录一、python问题描述二、解决方案总结一、问题描述springboot从2android.x

Python中Request的安装以及简单的使用方法图文教程

《Python中Request的安装以及简单的使用方法图文教程》python里的request库经常被用于进行网络爬虫,想要学习网络爬虫的同学必须得安装request这个第三方库,:本文主要介绍P... 目录1.Requests 安装cmd 窗口安装为pycharm安装在pycharm设置中为项目安装req

解决idea启动项目报错java: OutOfMemoryError: insufficient memory

《解决idea启动项目报错java:OutOfMemoryError:insufficientmemory》:本文主要介绍解决idea启动项目报错java:OutOfMemoryError... 目录原因:解决:总结 原因:在Java中遇到OutOfMemoryError: insufficient me

maven异常Invalid bound statement(not found)的问题解决

《maven异常Invalidboundstatement(notfound)的问题解决》本文详细介绍了Maven项目中常见的Invalidboundstatement异常及其解决方案,文中通过... 目录Maven异常:Invalid bound statement (not found) 详解问题描述可

nacos服务无法注册到nacos服务中心问题及解决

《nacos服务无法注册到nacos服务中心问题及解决》本文详细描述了在Linux服务器上使用Tomcat启动Java程序时,服务无法注册到Nacos的排查过程,通过一系列排查步骤,发现问题出在Tom... 目录简介依赖异常情况排查断点调试原因解决NacosRegisterOnWar结果总结简介1、程序在