【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方法,则解决。

相关推荐
希望永不加班1 天前
SpringBoot 多模块项目搭建:service/dao/web分层设计
java·前端·spring boot·后端·spring
星晨雪海1 天前
springboot 增删改查全套流程
java·spring boot·spring
Devin~Y1 天前
高并发内容社区实战面试:从 Java 基础到 Spring Cloud、Kafka、Redis、RAG 搜索全解析
java·spring boot·redis·spring cloud·kafka·向量数据库·rag
C雨后彩虹1 天前
箱子之字形摆放
java·数据结构·算法·华为·面试
star-yp1 天前
vibe coding 博客管理系统
java·spring boot·spring·ai·ai编程
小江的记录本1 天前
【JEECG Boot】JEECG Boot 系统性知识体系全方位结构化总结
java·前端·spring boot·后端·python·spring·spring cloud
Mr.wangh1 天前
Spring原理(Bean的生命周期)
java·前端·spring
派大星酷1 天前
Java 多线程创建方式
java·开发语言·多线程
棉花骑士1 天前
【AI Agent】面向 Java 工程师的Claude Code Harness 学习指南
java·开发语言
爱敲代码的小鱼1 天前
springboot(2)从基础到项目创建:
java·spring boot·spring