问题描述

通过系统访问MongoDB数据库,经过一段时间直接再次访问数据时,出现异常报错

019-10-23 10:49:26.796 ERROR 11368 --- [nio-8081-exec-9] c.a.d.m.advice.**  : Exception receiving message; nested exception is com.mongodb.MongoSocketReadException: Exception receiving message
org.springframework.data.mongodb.UncategorizedMongoDbException: Exception receiving message; nested exception is com.mongodb.MongoSocketReadException: Exception receiving message

经查找发现是因为MongDB服务器经过一段时间会把Java保持的连接状态变成close_wait,于是就出现了项目访问数据库报错情况。

解决方案

mongoDB配置

#自动重连
mongo.autoConnectRetry=true
#scoket保持活动
mongo.socketKeepAlive= true
#scoket超时时间
mongo.socketTimeout=XX

增强MongoDb设置
在Springboot项目的mongoDB配置中发现没有max-connection-idle-time等相关配置,查找相关资料发现了spring-boot-starter-data-mongodb增强包
1.在使用了spring-boot-starter-data-mongodb的项目中,增加以下依赖

#自动重连
<dependency><groupId>com.spring4all</groupId><artifactId>mongodb-plus-spring-boot-starter</artifactId><version>1.0.0.RELEASE</version>
</dependency>

2.在应用主类上增加==@EnableMongoPlus==注解,比如:

@EnableMongoPlus
@SpringBootApplication
@ServletComponentScan
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}

可用配置参数

spring.data.mongodb.option.min-connection-per-host=0
spring.data.mongodb.option.max-connection-per-host=100
spring.data.mongodb.option.threads-allowed-to-block-for-connection-multiplier=5
spring.data.mongodb.option.server-selection-timeout=30000
spring.data.mongodb.option.max-wait-time=120000
spring.data.mongodb.option.max-connection-idle-time=0
spring.data.mongodb.option.max-connection-life-time=0
spring.data.mongodb.option.connect-timeout=10000
spring.data.mongodb.option.socket-timeout=0spring.data.mongodb.option.socket-keep-alive=false
spring.data.mongodb.option.ssl-enabled=false
spring.data.mongodb.option.ssl-invalid-host-name-allowed=false
spring.data.mongodb.option.always-use-m-beans=falsespring.data.mongodb.option.heartbeat-socket-timeout=20000
spring.data.mongodb.option.heartbeat-connect-timeout=20000
spring.data.mongodb.option.min-heartbeat-frequency=500
spring.data.mongodb.option.heartbeat-frequency=10000
spring.data.mongodb.option.local-threshold=15

上述配置值均为默认值

MongoSocketReadException: Exception receiving message 问题解决方案相关推荐

  1. JUnit报错:Java.lang.Exception: No runnable methods解决方案

    JUnit报错:Java.lang.Exception: No runnable methods解决方案 参考文章: (1)JUnit报错:Java.lang.Exception: No runnab ...

  2. [Python] selenium Timed out receiving message from renderer

    主要问题可能是Selenium加载页面时间过长,讲一下代码添加进程序,有可能解决问题 options.addArguments("start-maximized") options ...

  3. 火车头V9开心版提示Exception Processing Message 0xc0000005 Parameters解决方法

    下载火车头采集器开心版,解压点击后跳出一个提示框Exception Processing Message 0xc0000005 Parameters,很多人都不知道怎么搞,这里就给大家分享下自己的解决 ...

  4. Premature end of Content-Length delimited message body解决方案

    [辰兮要努力]:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行! 博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端.后台.数据 ...

  5. .net Core 6.0 部署到欧拉(Linux)系统上,“The type initializer for ‘Gdip‘ threw an exception” 报错的解决方案

    前言 "The type initializer for 'Gdip' threw an exception" 报错的根本原因, 是因为我们使用了"System.Draw ...

  6. com.mongodb.MongoSocketReadTimeoutException: Timeout while receiving message

    报错 com.mongodb.MongoSocketReadTimeoutException: Timeout while receiving messageat com.mongodb.connec ...

  7. vs启动错误:Exception Processing Message 0xc0000005 Parameters...

    网上找了很多方法都不行,唯独这个方法真的奏效了. 鉴于自己在装了某一个软件,修改了.net framework的配置,所以重新安装了.net framework成功解决.

  8. 解决方法:点击火车头开心版出现Exception Processing Message 0xc0000005 Parameters

    下载火车头采集器开心版,解压后跳出一个弹窗. 解决方法:去控制面板-程序和功能-删除Microsoft .NET Framework v4.8.0(随便哪个版本),再去官网(https://www.m ...

  9. Exception Processing Message 0xc0000005 Parameters

    最近迁移升级vb.net的程序,很早之前做的程序,用vs2017打开,升级到.net 4.0,窗体控件的颜色统一改了下,从这种的 改为了这种: 窗体的属性进行了改动 但是改动之后浏览都是正常的,编译之 ...

最新文章

  1. php去掉字符串的最后一个字符 substr()的用法
  2. 干货 | 漫谈图神经网络
  3. 使用element ui 组件的时候,如果使用两个或多个按钮在同一个单元格内,按钮会竖着排列,但是不能够对齐怎么解决?
  4. 服务提供者和服务消费者
  5. shell 脚本比较字符串相等_LINUX快速入门第十六章:Shell 流程控制
  6. 基于JAVA+SpringBoot+Mybatis+MYSQL的旅游管理系统
  7. dubbo源码-服务发现
  8. 【编辑器】VSCode制表符Tab等修改
  9. 十大算法 — 插入排序法【C语言代码诠释】
  10. Mysql 数据库中Exists 关键字的使用
  11. win7、win8手动安装AHCI驱动
  12. MySQL8.0 setup_actors执行时间统计
  13. 好看的皮囊 · 也是大自然的杰作 · 全球高质量 · 美图 · 集中营 · 美女 · 2017-08-22期...
  14. 颜色恒常性 传统算法(AWB)
  15. 解决问题最高明的方法:打开自己
  16. 关于JavaWeb的分页查询的实现
  17. stm32自定义usb_HID设备
  18. 高斯消去法解线性方程组的fortran程序实现
  19. Matlab:Matlab编程语言应用之三维绘图可视化(基础知识点基本函)的使用方法简介、案例实现(三维曲线图机械阻尼振动三维等高线图等案例)之详细攻略
  20. 瞬变电磁数据读取显示,正演计算,及基础处理DLL文件调用

热门文章

  1. Style-Transfer 那些事儿
  2. 浙江大学远程教育计算机应用基础,浙江大学远程教育计算机应用基础2014年秋-2Windows知识题详细分解.docx...
  3. python正则表达式——验证密码邮箱
  4. JavaScript 系列四:流程控制
  5. 全志USB驱动安装详解
  6. python 装饰器模拟京东登陆
  7. 神奇洗衣机不需要洗涤剂 用机器鱼来洗衣服
  8. phpstudy中的nginx开发Laravel的对应配置
  9. 图数据库neo4j的安装与基本使用(一)
  10. 软件项目需求变更频繁,如何做好有效的需求管理和规划