设为首页收藏本站
网站公告 | 这是第一条公告
     

 找回密码
 立即注册
缓存时间15 现在时间15 缓存数据 一个人挺好的

一个人挺好的 -- 一个

查看: 742|回复: 0

关于mongodb连接池配置方式

[复制链接]

  离线 

TA的专栏

  • 打卡等级:即来则安
  • 打卡总天数:25
  • 打卡月天数:0
  • 打卡总奖励:288
  • 最近打卡:2025-03-18 10:18:58
等级头衔

等級:晓枫资讯-上等兵

在线时间
0 小时

积分成就
威望
0
贡献
308
主题
270
精华
0
金钱
1177
积分
628
注册时间
2023-2-11
最后登录
2025-5-31

发表于 2025-5-31 06:38:36 | 显示全部楼层 |阅读模式
mongodb连接池配置


参考官方描述

1.png


如果spring使用以下mongodb的配置

则默认是没有连接池的
  1. spring:
  2.   data:
  3.     mongodb:
  4.       host: 地址
  5.       port: 27017
  6.       database: 数据库名
  7.       username: 账号
  8.       password: 密码
复制代码
每隔一两分钟没有去请求的话就会断开连接重连,每次都要等待5-10秒之间才重新连接上,请求速度很慢,这一点确实非常不友好。
出现这种问题就是maxIdleTimeMS时间太长,缩短每次连接删除和关闭之前保持的空闲状态等待时间就可以避免这个问题,但也会造成连接池的频繁连接和关闭。
每次打开和关闭控制台打印如下提示:
  1. Closed connection [connectionId{localValue:11, serverValue:1607}] to xxx.cc:27017 because there was a socket exception raised by this connection.Opened connection [connectionId{localValue:21, serverValue:1623}] to xxx.cc:27017
复制代码
maxIdleTimeMS我设置时间为30秒,不知道为什么我设置为120秒、60秒好像都不管用。

mongodb的配置


  • 就尽量不要用上面的方式来配,需要使用uri的方式来去配,不需要在java代码中去写配置类,不需要在java代码中去写配置类,不需要在java代码中去写配置类。
  1. spring:
  2.   data:
  3.     mongodb:
  4.       uri: mongodb://数据库账号:数据库密码@数据库地址:27017/数据库名称?connectTimeoutMS=5000&socketTimeoutMS=3000&maxPoolSize=30000&minPoolSize=0&maxIdleTimeMS=1000&readPreference=primary&retryWrites=true
复制代码

  • uri的前半部分:注意符号格式是固定
  1. mongodb://数据库账号:数据库密码@数据库地址:27017/数据库名称
复制代码

  • uri的后半部分是一些额外配置选项,使用 " ? "这个问号进行标识分割,每一个配置选项之间使用" & "符号来衔接。
  1. ?connectTimeoutMS=5000
  2. &socketTimeoutMS=3000
  3. &maxPoolSize=30000
  4. &minPoolSize=0
  5. &maxIdleTimeMS=1000
  6. &readPreference=primary
  7. &retryWrites=true
复制代码
连接池中的最小连接数。默认值为 。
connectTimeoutMS在超时之前尝试连接的时间(以毫秒为单位)。默认值为 10,000 毫秒,但特定驱动程序可能具有不同的默认值
socketTimeoutMS在尝试超时之前尝试在套接字上发送或接收的时间(以毫秒为单位)。默认值为永不超时,尽管不同的驱动程序可能会有所不同
maxPoolSize连接池中的最大连接数。默认值为 。100
minPoolSize连接池中的最小连接数。默认值为 。0
maxIdleTimeMS连接在删除和关闭之前可以在池中保持空闲状态的最大毫秒数。
并非所有驱动程序都支持此选项。
readPreference指定此连接的读取首选项。
retryWrites启用可重试写入。
需要特别注意maxIdleTimeMS这个时间的设置,多次测试证实了:超过设置的指定时间后所有线程池的空闲线程连接会被自动关闭,关闭后所有线程池空闲线程会重新连接
参数配置,根据你们需求来 ,我只是给出个示例
更多参数选项参考地址
测试连接断开后,控制台日志如下:已经开启指定数量的线程池无误
2.jpeg


总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持晓枫资讯。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
晓枫资讯-科技资讯社区-免责声明
免责声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。
      1、注册用户在本社区发表、转载的任何作品仅代表其个人观点,不代表本社区认同其观点。
      2、管理员及版主有权在不事先通知或不经作者准许的情况下删除其在本社区所发表的文章。
      3、本社区的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,举报反馈:点击这里给我发消息进行删除处理。
      4、本社区一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
      5、以上声明内容的最终解释权归《晓枫资讯-科技资讯社区》所有。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~
严禁发布广告,淫秽、色情、赌博、暴力、凶杀、恐怖、间谍及其他违反国家法律法规的内容。!晓枫资讯-社区
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|晓枫资讯--科技资讯社区 本站已运行

CopyRight © 2022-2025 晓枫资讯--科技资讯社区 ( BBS.yzwlo.com ) . All Rights Reserved .

晓枫资讯--科技资讯社区

本站内容由用户自主分享和转载自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

如有侵权、违反国家法律政策行为,请联系我们,我们会第一时间及时清除和处理! 举报反馈邮箱:点击这里给我发消息

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表