欢迎投稿

今日深度:

关于mongodb连接池配置方式,

关于mongodb连接池配置方式,


目录
  • mongodb连接池配置
    • 参考官方描述
    • 如果spring使用以下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的配置

    • 就尽量不要用上面的方式来配,需要使用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这个时间的设置,多次测试证实了:超过设置的指定时间后所有线程池的空闲线程连接会被自动关闭,关闭后所有线程池空闲线程会重新连接

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

    更多参数选项参考地址

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

    总结

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

    您可能感兴趣的文章:
    • MongoDB中连接池、索引、事务
    • SpringBoot 整合mongoDB并自定义连接池的示例代码
    • SpringBoot中使用MongoDB的连接池配置
    • springboot配置mongodb连接池的方法步骤
    • Spring Boot中使用MongoDB的连接池配置的方法

    www.htsjk.Com true http://www.htsjk.com/Mysql/48930.html NewsArticle 关于mongodb连接池配置方式, 目录 mongodb连接池配置 参考官方描述 如果spring使用以下mongodb的配置 mongodb的配置 总结 mongodb连接池配置 参考官方描述 如果spring使用以下mongodb的配置 则默认...
    评论暂时关闭