Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > mongodb连接池配置

关于mongodb连接池配置方式

作者:轮孑哥

这篇文章主要介绍了关于mongodb连接池配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

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的配置

spring:
  data:
    mongodb:
      uri: mongodb://数据库账号:数据库密码@数据库地址:27017/数据库名称?connectTimeoutMS=5000&socketTimeoutMS=3000&maxPoolSize=30000&minPoolSize=0&maxIdleTimeMS=1000&readPreference=primary&retryWrites=true
mongodb://数据库账号:数据库密码@数据库地址:27017/数据库名称
?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这个时间的设置,多次测试证实了:超过设置的指定时间后所有线程池的空闲线程连接会被自动关闭,关闭后所有线程池空闲线程会重新连接

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

更多参数选项参考地址

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

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文