当前位置: 代码网 > it编程>数据库>mongodb > 关于mongodb连接池配置方式

关于mongodb连接池配置方式

2025年03月19日 mongodb 我要评论
mongodb连接池配置参考官方描述如果spring使用以下mongodb的配置则默认是没有连接池的spring: data: mongodb: host: 地址 port

mongodb连接池配置

参考官方描述

如果spring使用以下mongodb的配置

则默认是没有连接池的

spring:
  data:
    mongodb:
      host: 地址
      port: 27017
      database: 数据库名
      username: 账号
      password: 密码

每隔一两分钟没有去请求的话就会断开连接重连,每次都要等待5-10秒之间才重新连接上,请求速度很慢,这一点确实非常不友好。

出现这种问题就是maxidletimems时间太长,缩短每次连接删除和关闭之前保持的空闲状态等待时间就可以避免这个问题,但也会造成连接池的频繁连接和关闭。

每次打开和关闭控制台打印如下提示:

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代码中去写配置类。
spring:
  data:
    mongodb:
      uri: mongodb://数据库账号:数据库密码@数据库地址:27017/数据库名称?connecttimeoutms=5000&sockettimeoutms=3000&maxpoolsize=30000&minpoolsize=0&maxidletimems=1000&readpreference=primary&retrywrites=true
  • uri的前半部分:注意符号格式是固定
mongodb://数据库账号:数据库密码@数据库地址:27017/数据库名称
  • uri的后半部分是一些额外配置选项,使用 " ? "这个问号进行标识分割,每一个配置选项之间使用" & "符号来衔接。
?connecttimeoutms=5000
&sockettimeoutms=3000
&maxpoolsize=30000
&minpoolsize=0
&maxidletimems=1000
&readpreference=primary
&retrywrites=true

连接池中的最小连接数。默认值为 。

connecttimeoutms

在超时之前尝试连接的时间(以毫秒为单位)。默认值为 10,000 毫秒,但特定驱动程序可能具有不同的默认值

sockettimeoutms

在尝试超时之前尝试在套接字上发送或接收的时间(以毫秒为单位)。默认值为永不超时,尽管不同的驱动程序可能会有所不同

maxpoolsize连接池中的最大连接数。默认值为 。100
minpoolsize

连接池中的最小连接数。默认值为 。0

maxidletimems

连接在删除和关闭之前可以在池中保持空闲状态的最大毫秒数。

并非所有驱动程序都支持此选项。

readpreference指定此连接的读取首选项。
retrywrites启用可重试写入。

需要特别注意maxidletimems这个时间的设置,多次测试证实了:超过设置的指定时间后所有线程池的空闲线程连接会被自动关闭,关闭后所有线程池空闲线程会重新连接

参数配置,根据你们需求来 ,我只是给出个示例

更多参数选项参考地址

测试连接断开后,控制台日志如下:已经开启指定数量的线程池无误

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com