当前位置: 首页 > article >正文

【java】java通过s3访问ceph报错

1.报错信息、背景

工作中起了几个访问ceph的服务pod节点,一段时间后1个节点一直报错Unable to execute HTTP request: Timeout waiting for connection from pool,详细i信息如下图片,有且仅有1个节点报错,其他节点访问正常。看日志内容为链接池满了,初步怀疑是ceph服务端的连接池满了,但是为什么只有1个pod节点报错,其他节点报错??
后续通过查阅s3官网,了解到这个连接池为客户端自己维护的http连接池

在这里插入图片描述

2. 解决

2.1. 通过查询s3官网文档

https://docs.aws.amazon.com/zh_cn/sdk-for-java/latest/developer-guide/home.html –中文
https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/home.html –英文

在这里插入图片描述在这里插入图片描述

  1. 第一个图片说明访问ceph是有连接池资源的
  2. 第二个图片说明ceph默认使用的http是apache httpclient,并且连接池指的是本地http连接池,并不是ceph服务端的连接池数量。

2.2. 修改httpclient连接池,验证问题

在这里插入图片描述

  1. 通过查看源码,默认连接池设置的是50个,可以修改为1个,方便测试复现问题。software.amazon.awssdk.http.SdkHttpConfigurationOption
    在这里插入图片描述
    在这里插入图片描述
  2. 用jmeter多线程测试下载工程,马上会复现同样的报错。
  3. 参考官网,发现是代码中下载附件后未释放流,所以出现连接池占慢的情况,后续加上close方法,则解决。
    在这里插入图片描述
    在这里插入图片描述

http://www.kler.cn/a/392290.html

相关文章:

  • uniCloud云对象调用第三方接口,根据IP获取用户归属地的免费API接口,亲测可用
  • 爱普生SG-8200CJ可编程晶振在通信设备中的应用
  • vue2+ element ui 集成pdfjs-dist
  • MySQL技巧之跨服务器数据查询:进阶篇-从A数据库复制到B数据库的表中
  • 在 Ubuntu 上安装 `.deb` 软件包有几种方法
  • 基于yolov8、yolov5的番茄成熟度检测识别系统(含UI界面、训练好的模型、Python代码、数据集)
  • windows下qt5.12.11使用ODBC远程连接mysql数据库
  • 5G NR gNB 逻辑架构及其功能拆分选项
  • 编程之路,从0开始:字符函数和字符串函数
  • 基于微信小程序的电子购物系统的设计与实现
  • Javascript高级—闭包问题
  • 【JavaSE】(5)继承
  • 河南省的一级科技查新机构有哪些?
  • Linux redis-6.2.6安装
  • Spring Cloud Contract快速入门Demo
  • SwiftUI 高级开发教程系列 - 第 2 章:组合视图与修饰符
  • Linux python程序打包方式
  • MyBatis及相关文件配置
  • -bash: /home/xxx/anaconda3/bin/conda: No such file or directory
  • Leetcode 每日一题 12.整数转罗马数字
  • 云原生-docker安装与基础操作
  • C/C++中使用MYSQL
  • 基于STM32的智能门禁系统设计
  • 达梦数据库DM管理工具增删改不生效怎么办?如何设置事务自动提交?
  • 从0开始学习Linux——用户管理
  • 索引的工作流程与执行原理