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

相关文章

Nginx 配置跨域的实现及常见问题解决

《Nginx配置跨域的实现及常见问题解决》本文主要介绍了Nginx配置跨域的实现及常见问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来... 目录1. 跨域1.1 同源策略1.2 跨域资源共享(CORS)2. Nginx 配置跨域的场景2.1

qt5cored.dll报错怎么解决? 电脑qt5cored.dll文件丢失修复技巧

《qt5cored.dll报错怎么解决?电脑qt5cored.dll文件丢失修复技巧》在进行软件安装或运行程序时,有时会遇到由于找不到qt5core.dll,无法继续执行代码,这个问题可能是由于该文... 遇到qt5cored.dll文件错误时,可能会导致基于 Qt 开发的应用程序无法正常运行或启动。这种错

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

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

MySQL 设置AUTO_INCREMENT 无效的问题解决

《MySQL设置AUTO_INCREMENT无效的问题解决》本文主要介绍了MySQL设置AUTO_INCREMENT无效的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录快速设置mysql的auto_increment参数一、修改 AUTO_INCREMENT 的值。

关于跨域无效的问题及解决(java后端方案)

《关于跨域无效的问题及解决(java后端方案)》:本文主要介绍关于跨域无效的问题及解决(java后端方案),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录通用后端跨域方法1、@CrossOrigin 注解2、springboot2.0 实现WebMvcConfig

Go语言中泄漏缓冲区的问题解决

《Go语言中泄漏缓冲区的问题解决》缓冲区是一种常见的数据结构,常被用于在不同的并发单元之间传递数据,然而,若缓冲区使用不当,就可能引发泄漏缓冲区问题,本文就来介绍一下问题的解决,感兴趣的可以了解一下... 目录引言泄漏缓冲区的基本概念代码示例:泄漏缓冲区的产生项目场景:Web 服务器中的请求缓冲场景描述代码

解决JSONField、JsonProperty不生效的问题

《解决JSONField、JsonProperty不生效的问题》:本文主要介绍解决JSONField、JsonProperty不生效的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录jsONField、JsonProperty不生效javascript问题排查总结JSONField

github打不开的问题分析及解决

《github打不开的问题分析及解决》:本文主要介绍github打不开的问题分析及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、找到github.com域名解析的ip地址二、找到github.global.ssl.fastly.net网址解析的ip地址三

RedisTemplate默认序列化方式显示中文乱码的解决

《RedisTemplate默认序列化方式显示中文乱码的解决》本文主要介绍了SpringDataRedis默认使用JdkSerializationRedisSerializer导致数据乱码,文中通过示... 目录1. 问题原因2. 解决方案3. 配置类示例4. 配置说明5. 使用示例6. 验证存储结果7.

Swagger在java中的运用及常见问题解决

《Swagger在java中的运用及常见问题解决》Swagger插件是一款深受Java开发者喜爱的工具,它在前后端分离的开发模式下发挥着重要作用,:本文主要介绍Swagger在java中的运用及常... 目录前言1. Swagger 的主要功能1.1 交互式 API 文档1.2 客户端 SDK 生成1.3