参考官方描述:
如果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 |
|
|
socketTimeoutMS |
|
|
maxPoolSize | 连接池中的最大连接数。默认值为 。100
|
|
minPoolSize | 连接池中的最小连接数。默认值为 。 |
|
maxIdleTimeMS |
|
|
readPreference | 指定此连接的读取首选项。 | |
retryWrites | 启用可重试写入。 |
需要特别注意maxIdleTimeMS这个时间的设置,多次测试证实了:超过设置的指定时间后所有线程池的空闲线程连接会被自动关闭,关闭后所有线程池空闲线程会重新连接
参数配置,根据你们需求来 ,我只是给出个示例
更多参数选项参考地址
测试连接断开后,控制台日志如下:已经开启指定数量的线程池无误文章来源:https://www.toymoban.com/news/detail-587617.html
文章来源地址https://www.toymoban.com/news/detail-587617.html
到了这里,关于mongodb 连接池配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!