mongodb 连接池配置

2023-11-10

参考官方描述:

如果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这个时间的设置,多次测试证实了:超过设置的指定时间后所有线程池的空闲线程连接会被自动关闭,关闭后所有线程池空闲线程会重新连接

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

 更多参数选项参考地址

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mongodb 连接池配置 的相关文章

  • 如何将值从 android 传递到 php Web 服务并检索它?

    我正在尝试将一个值传递给我的 php web 服务 我已经使用此代码来传递 名称 值 private class MyAsyncTask extends AsyncTask
  • 展平具有未知列数的子/父数据

    我正在努力寻找存储和表示 SQL MySQL DB 和 C Windows 表单中的数据的最佳方法 我的数据映射到如下所示的类时 public class Parent public string UniqueID get set Key
  • SQLAlchemy+pymysql 错误:sqlalchemy.util.queue.Empty

    尝试使用 Eclispse 在 Ubuntu 上运行 Python 2 SQLAlchemy 0 8 和 MySQL5 2 但我不断收到以下错误 我使用 pymysql 实际上是 pymysql3 引擎 模块监视器 from sqlalch
  • 从 datagridview 选定的行更新 mysql 数据库

    我有一个 datagridview 它在表单加载事件上加载 mysql 数据库表 t pi clients 并且我有另一个选项卡 其中包含 t pi client 相应列的文本框 它能够从 fullrowselect 模式获取数据到这些文本
  • mysqli_stmt_bind_result 的奇怪问题

    好吧 这让我很烦恼 我似乎在 PHP 文档中找不到任何内容 在 Google resultosphere 中也找不到任何内容 所以也许有人可以在这里提供帮助 我正在使用准备好的语句 绑定结果 然后使用这些绑定结果来填充下拉列表 例子
  • 加密 mongodb 中的密码字段

    我有以下代码 它插入userName and password进入数据库 但密码以纯文本格式存储 我的意思是 当我查看数据库时 我可以看到插入的密码 我想存储password in encrypted format MongoClient
  • 如何列出表中的所有列?

    对于各种流行的数据库系统 如何列出表中的所有列 对于 MySQL 请使用 DESCRIBE name of table 只要您使用 SQL Plus 或 Oracle 的 SQL Developer 这也适用于 Oracle
  • 如何对主索引重新编号

    我有一个简单的 MySQL 表 主索引 id 不是一一编号的 1 31 35 100 等 我希望它们的编号如 1 2 3 4 请告诉我该怎么做 我还想指出的是 我知道该操作可能产生的后果 但我只是想整理一下表格 我同意其他方法也可以 但我只
  • 从数据库中给定时间起经过的时间

    我有一个 HTML 表 其中包含从数据库中提取的记录 我正在使用 PHP MySQL 我的表中名为 Timer 的列未从数据库中检索 我需要在此处显示经过的时间 从数据库中的特定时间开始 例如 假设现在的时间是2013年2月21日下午6点2
  • 优化mysql中日期类型字段的查询

    我目前准备了以下查询 select sum amount as total from incomes where YEAR date 2019 and MONTH date 07 and incomes deleted at is null
  • Spring Data MongoDB 和批量更新

    我正在使用 Spring Data MongoDB 并且想要执行批量更新 就像此处描述的那样 http docs mongodb org manual reference method Bulk find update Bulk find
  • mongorestore 从独立到复制集

    我已转储在默认端口上运行的独立 mongo 数据库 14Gb 大 如下所示 mongodump username
  • AttributeError:尝试在 python 中运行 sqlalchemy 来管理我的 SQL 数据库时,“Engine”对象没有属性“execute”

    我有以下代码行不断给我一个错误 即引擎对象没有对象执行 我认为我一切都对 但不知道接下来会发生什么 似乎其他人也遇到了这个问题 重新启动他们的笔记本电脑就可以了 我正在使用 Pycharm 并已重新启动但没有任何解决方案 任何帮助是极大的赞
  • 删除 mysql 数据库中超过 3 个月的行的作业

    我们使用 mysql 服务器作为集中式日志系统 我希望有一项工作来定期删除 清理超过 3 个月的表条目 做这个的最好方式是什么 提前致谢 hinling 您是否在字段中存储项目的创建日期 If so DELETE FROM myTable
  • MySQL - 从表中删除空值行

    我有一张桌子 user 有超过 60 列 其中一列的名称是 用户名 我想删除其中的行username字段为空或NULL 我怎样才能做到这一点 谢谢你 Try this DELETE FROM user WHERE username IS N
  • 如果一列没有值,MySQL 返回最大值或 null

    我尝试获取 mysql select 的最大值 但如果有一行不包含时间戳 则希望将其设置为 null empty 0 表统计数据 简化 ID CLIENT ORDER DATE CANCEL DATE 1 5 1213567200 2 5
  • 从所有表中选择

    我的数据库中有很多表都具有相同的结构 我想从所有表中进行选择 而不必像这样列出所有表 SELECT name FROM table1 table2 table3 table4 我尝试过 但这不起作用 SELECT name FROM 有没有
  • java中如何知道一条sql语句是否执行了?

    我想知道这个删除语句是否真的删除了一些东西 下面的代码总是执行 else 是否删除了某些内容 执行此操作的正确方法是什么 public Deleter String pname String pword try PreparedStatem
  • 每个搜索词显示一行,如果未找到则替换默认值

    Query SELECT product id name FROM product WHERE barcode in 681027 8901030349379 679046 679047 679082 679228 679230 67923
  • 无需 cron 在后台发送邮件

    我想知道是否有一种方法可以运行 PHP 循环 以便在后台向订阅者发送几百封电子邮件 我的目标是格式化新闻通讯 单击发送 然后关闭浏览器或更改页面 当然 发送电子邮件的实际过程将在后台运行 不会因浏览器关闭而中断 我知道这可以通过 cron

随机推荐

  • 一些关于c语言if语句的练习

    练习题1 在终端输入一个整数 用来表示学生的成绩 输出学生成绩对应的等级 90 100 A 80 90 B 70 80 C 60 70 D 0 60 不及格 练习题2 在终端输入一个整数 用来表示年份 输出这一年是平年还是闰年 闰年 能被4
  • 联盟链FISCO BCOS网络端口讲解

    FISCO BCOS是完全开源的联盟区块链底层技术平台 由金融区块链合作联盟 深圳 简称金链盟 成立开源工作组通力打造 开源工作组成员包括博彦科技 华为 深证通 神州数码 四方精创 腾讯 微众银行 亦笔科技和越秀金科等金链盟成员机构 代码仓
  • IDEA 查看源码快捷键

    一 快捷键 快捷键 功能 Ctrl Shift i 出现类似于预览的小窗口 Ctrl Enter 接上步 完全打开源码 Ctrl 鼠标左键 一步到位打开源码 Ctrl Shift i gt Ctrl Enter IDEA 2018版 实用快
  • 使用Canal实现mysql binlog增量订阅数据

    前言 是由公司业务改造搜索功能 使用ES搜索引擎中间件 那么我们需要将mysql中的数据同步至ES服务中 最总选择使用alibaba的canal增量订阅和解析工具 简单原理 canal模拟mysql slave的交互协议 伪装自己为mysq
  • 使用Java操作excel的几种方法

    在平时的业务系统开发中 少不了需要用到导出 导入excel功能 今天我们就一起来总结一下 下面给大家介绍一下几种常用方法 apache poi easypoi easyexcel 文章目录 一 Apache poi 1 1 首先添加依赖 1
  • 动态IP代理是什么?一文看懂动态代理IP

    一 什么是动态IP代理 动态IP代理是一种代理服务 而动态IP是由ISP动态分配给用户的IP地址 这些IP地址会周期性地更改 每次链接互联网时 用户会被分配一个新的IP地址 因而也称为 轮换IP IP地址轮换是一个过程 您的IP 地址 网络
  • 【深入浅出深度学习】1、深度学习的发展

    人工智能 机器学习 深度学习的关系 1 人工智能 机器推理 利用计算机构建具有人类智力特征的复杂机器 即为通用人工智能或强人工智能 即让机器拥有人类的所有感觉 所有理智 像人类一样思考 要实现真正意义上的人工智能可能还有很长的路 但是在一些
  • Linux 进程异常退出 如何查看日志

    当进程异常退出时 可以通过以下步骤来查看日志 找到进程的 PID 进程 ID 可以通过 ps 命令来查看 ps aux grep lt 进程名称 gt 找到进程的日志文件 一般情况下 进程的日志文件都会被记录在 var log 目录下 可以
  • 将Echart的canvas动画导出为.gif进行下载,有Demo

    JS前端下载导出Echart的动画为 gif图 实现方式为 html2canvas js gif js gif worker js 下载html2canvas js引入项目中 官网 html2canvas js 官网 2 下载gif js引
  • C++重载前置和后置++运算符

    重载前置和后置 运算符 大家在学习运算符号的时候应该是注意到了 的两种用法 一种是前置的 一种是后置的 二者的主要的区别就是一个是先增加后取值 一个是先取值后自加 下面通过一个案例来解释一下重载 运算符号 来源 清华c C l o c k
  • MIT_6.828_lab2_exercise1_讲解

    这一部分任务就是完成5个函数 boot alloc mem init page init page alloc page free 做之前 要先分析一下内存分布和地址转换的内容 这些内容都是我做的时候边做边摸索的 遇到做不下去 就观察一下查
  • 线程池的讲解

    目录 1 传统线程缺点 2 线程池是什么 3 线程池的优点 4 线程池的使用 1 传统线程缺点 1 每次都需要创建和消耗线程 是需要消耗系统资源的 2 线程没有任务管理功能 当任务量比较大的时候没有任务队列对任务进行管理或者是拒绝任务 因此
  • C/C++中map和set嵌套使用

    边用边记录 所以不断更新中 目录 1 头文件 2 定义 3 迭代器 4 判断map中某个键值对是否存在 5 插入值 6 遍历map中嵌套的set 1 头文件 include
  • 线程间实现通信的几种方式

    目录 线程通信相关概述 提出问题 方式一 使用Object类的wait 和 notify 方法 方式二 Lock 接口中的 newContition 方法返回 Condition 对象 Condition 类也可以实现等待 通知模式 方法三
  • Wilcoxon符号秩+秩和检验学习[转载]

    参数检验就是已知数据的精确分布模型 根据数据来求出模型中的未知参数 而非参数检验就是无需对样本总体分布 比如满足正态分布 做出假设 1 符号检验 转自 https baike baidu com item E9 9D 9E E5 8F 82
  • excel文件拷贝

    package cn sos until import java io File import java io FileInputStream import java io FileOutputStream import java io I
  • MarkDown(LaTex) 数学公式

    目的 本文旨在记载MarkDown中一些常用的数学表达式的编码规则 其实使用的是LaTeX的编码规则 这些规则也可以用在matlab的一些函数及表达式中 为自己的工作带来便利 虽然接触时间很短 但是还是根据自己的编程经历得出了自己的一些看法
  • Mariadb修改数据

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 一 增加列 MariaDB none gt ALTER TABLE study db books gt ADD COLUMN classify id VARCHAR 20
  • Qt 下载安装

    文章目录 Qt下载 安装 多种渠道下载 1 Qt官方下载 慢 2 Qt国内镜像下载 较快 3 迅雷下载 快 安装 Qt下载 安装 多种渠道下载 1 Qt官方下载 慢 http download qt io archive 和 officia
  • mongodb 连接池配置

    参考官方描述 如果spring使用以下mongodb的配置 则默认是没有连接池的 spring data mongodb host 地址 port 27017 database 数据库名 username 账号 password 密码 每隔