Mongo中的套接字超时异常

2023-12-27

我看到几个MongoExceptions引起的SocketTimeoutException(请参阅下面的堆栈跟踪)。也就是说,客户端在超时(30秒)内没有得到响应。现在我想知道如何解决它。

简单的解决方案是增加超时,但我想首先了解根本原因。你有什么建议?



caused by java.net.SocketTimeoutException: Read timed out
                 java.net.SocketInputStream.socketRead0 (Native Method)
                        java.net.SocketInputStream.read (SocketInputStream.java:152)
                        java.net.SocketInputStream.read (SocketInputStream.java:122)
                      java.io.BufferedInputStream.read1 (BufferedInputStream.java:273)
                       java.io.BufferedInputStream.read (BufferedInputStream.java:334)
                com.mongodb.Response$MyInputStream.read (Response.java:168)
               org.bson.BasicBSONDecoder$BSONInput.fill (BasicBSONDecoder.java:386)
     org.bson.BasicBSONDecoder$BSONInput.readUTF8String (BasicBSONDecoder.java:460)
                org.bson.BasicBSONDecoder.decodeElement (BasicBSONDecoder.java:155)
                      org.bson.BasicBSONDecoder._decode (BasicBSONDecoder.java:79)
                       org.bson.BasicBSONDecoder.decode (BasicBSONDecoder.java:57)
                    com.mongodb.DefaultDBDecoder.decode (DefaultDBDecoder.java:61)
                      com.mongodb.Response. (Response.java:83)
                                  com.mongodb.DBPort.go (DBPort.java:142)
                                com.mongodb.DBPort.call (DBPort.java:92)
                   com.mongodb.DBTCPConnector.innerCall (DBTCPConnector.java:244)
                        com.mongodb.DBTCPConnector.call (DBTCPConnector.java:216)
             com.mongodb.DBApiLayer$MyCollection.__find (DBApiLayer.java:288)
             com.mongodb.DBApiLayer$MyCollection.__find (DBApiLayer.java:273)
                       com.mongodb.DBCollection.findOne (DBCollection.java:728)
                       com.mongodb.DBCollection.findOne (DBCollection.java:708)
  

这些超时是否发生在一段时间不活动之后?您的连接池很可能在闲置太长时间后变得陈旧。

如果是这样,有两种方法可以解决这个问题:

  1. 捕获套接字超时异常,您的立即请求应该能够访问新的连接池。 (这是如果连接对象中的自动重新连接选项保留为 true,这是默认值。)

  2. 使用自定义保持活动状态,使用相同的连接池定期 ping mongod 服务器,以便池保持最新状态。

方案1很容易实现,但是默认的socket超时时间在30秒左右,这有点过大了。您可以根据需要更改此设置。

选项 2 有点 hack,涉及线程。

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

Mongo中的套接字超时异常 的相关文章

  • 更新 MongoDB 中精确元素数组中的字段

    我有一个结构如下的文档 id 43434 heroes nickname test items nickname test2 items Can I set的第二个元素items数组中嵌入对象的数组heros with nickname t
  • 获取背景图片url值

    我正在尝试获取背景图像 url 的值 url 直接在元素标签中使用 style 属性内联设置 如下所示 a style background image none a 我尝试做 var url this css background ima
  • 为什么 mongo 的状态会抛出异常(code = exited,status = 48)?

    我在使用 mongo 时遇到了极其缓慢的情况 早些时候 当我输入 sudo systemctl status mongodb mongo 时 我出现在线并且呈绿色 现在几天后他开始抛弃我 mongodb service High perfo
  • 如何将 json 字符串编组到 bson 文档以写入 MongoDB?

    我正在寻找的东西相当于文档 parse https api mongodb com java 3 2 org bson Document html parse java lang String 在golang中 这允许我直接从json创建b
  • 如何获取从中提取数据的服务器的服务器地址

    我知道我们使用cursor getServerAddress 在Java 驱动程序中拥有它 但是 我在 C 中找不到任何相关的调用 不幸的是 在深入研究 C 驱动程序源代码 以及 Java 源代码以了解它在做什么 之后 用作获取一部分的实际
  • 合并两个 $or 语句

    我正在尝试执行一个由两个组成的查询 or s Date1 Date2 NULL NULL NULL TODAY NULL TOMRW TODAY TODAY TODAY NULL TOMRW NULL 我已经标记了与星号匹配的行 Date1
  • 有没有办法限制特定集合中的记录数量

    假设我插入以下记录 例如 foo1 foo2 foo3 foo4 foo10 我希望该集合在任何时间点仅保留 5 条记录 例如 它可能是 foo1 foo5 或 foo2 foo6 或 foo6 foo10 我应该如何实现这个目标 听起来您
  • Mongoose 在结果的 _id 字段中返回“new ObjectId”

    当我尝试查询时 结果包含 id其中包含 new ObjectId 的字段 如何避免这种 new ObjectId 并仅将哈希值包含为字符串 由于此问题 将数据作为 JSON 响应发送回失败 下面是一个基本的demo 我的查询代码 book
  • Mongoose 5.x 不允许传递大量运算符

    聚合查询返回错误 Mongoose 5 x 不允许将操作符传递给Model aggregate 代替Model aggregate match skip do Model aggregate match skip 我正在使用 mongoos
  • Mongo 可审核的 ZonedDateTime 字段在 Spring Boot 2 中不起作用

    在 Spring Boot 项目中 我使用 CreatedDate 之类的注释来保存有关创建 更新相应文档的日期的信息 整个项目都使用 ZonedDateTime 因此带注释的字段也是 ZonedDateTime 为了实现 Mongo 的日
  • 如何在组内推送多列的值

    看来我的查询不会像我期望的那样 我想分组name并将 location1 和 location2 映射到名为的数组中locations Data name Jack localtion1 Taiwan localtion2 France n
  • Meteor `Deps.autorun` 与 `Collection.observe`

    使用之间有什么优点 缺点Deps autorun or Collection observe使第三方小部件与反应式小部件保持同步Meteor Collection 例如 我使用 jsTree 直观地显示我存储在 MongoDB 中的目录树
  • 从查询更新最后一个文档时遇到问题

    您好 我是 Mongodb 的新手 我目前正在尝试更新查询结果中的最后一个文档 但遇到问题 我知道如何使用获取最后一个文档 db collection find sort natural 1 limit 1 但我该如何更新呢 我尝试这样做
  • Mongoose 填充与对象嵌套

    使用之间是否有任何性能差异 查询的处理时间 猫鼬种群 http mongoosejs com docs populate html和直接对象包含 每种应该什么时候使用 猫鼬种群示例 var personSchema Schema id Nu
  • 找不到模块:错误:与 webpack 捆绑时无法解析模块“模块”mongodb

    当我尝试在节点应用程序中使用 mongoose connect 时 Webpack 抛出以下错误 最初还有一些错误 例如 Module not found Error Cannot resolve module fs 在我的 webpack
  • Mongodb的“mongodump”命令,javascript执行错误

    也许我完全误解了如何mongodump应该可以工作 但除了返回一个之外我似乎无法让它做任何事情JavaScript execution failed SyntaxError Unexpected identifier error 这就是我正
  • Nodejs mongodb 的 Transaction API `withTransaction` 总是返回 null

    我想从 mongodb 返回某些结果withTransaction功能 但是 我似乎无法返回除 null 之外的任何内容 官方文档中记录了应该返回承诺 https mongodb github io node mongodb native
  • Mongoose:ObjectId 比较失败不一致

    我有一个简单的工具 用于构建文档集合 然后自动格式化它们以进行 EPUB 或 LaTeX 渲染 该工具是在 ExpressJS 之上编写的 我正在使用 Coffeescript 如果这很重要的话 我对此表示怀疑 使用猫鼬 我有以下内容 Do
  • MongoDB 和 Mongoose 的区别

    我想使用 mongodb 数据库 但我注意到有两种不同的数据库 它们有自己的网站和安装方法 mongodb 和 mongoose 所以我问自己这个问题 我该使用哪一个 因此 为了回答这个问题 我向社区询问您是否可以解释一下这两者之间的区别是
  • 如何从 MongoDB 集合中删除旧记录?

    如何从集合中删除超过 7 天的旧文档 orderID 456986 orderType OnlinePurchase orderStatus expired address Hexel payement Card isDomestic tr

随机推荐

  • 条件/三元运算符如何工作? C++ [重复]

    这个问题在这里已经有答案了 以下代码的直译是什么 另外 请解释它的含义以及使用该运算符的不同方法 int i 1 j 2 cout lt lt i gt j i j lt lt is greater lt lt endl 有关三元运算符的任
  • 机器的.net核心cpu使用率

    我最近从 c 迁移到 net core 在 C 中 我使用以下方法获取 CPU 使用情况 PerformanceCounter cpuCounter PerformanceCounter ramCounter cpuCounter new
  • 全新安装后,Stenciljs 从 @types/babel__traverse 包抛出构建错误

    So for context I have just installed stencil And was wanting to mess around with it I m using latest version from the do
  • Quill JS - 检查表单提交上的文本是否更改

    我正在使用 Quill 富文本 需要找到一种方法来检查页面提交表单时文本是否已更改 我对使用 Quill 还很陌生 并且一直在查看事件here https quilljs com docs api events html 每次文本更改时 显
  • 循环遍历数组的数组

    我有一个数组的数组 比如图形 如何迭代所有数组 var parentArray 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 26 27 28 它只是一个示例数
  • Django:部署服务器上未显示静态文件

    我无法让我的网站正确加载静态文件 关于静态文件的settings py文件如下 Static files STATIC URL static STATIC ROOT var www str8red com static STATICFILE
  • 有资质的生产者消费者

    我是 clojure 的新手 正在尝试了解如何正确使用其并发功能 因此任何批评 建议都会受到赞赏 所以我尝试在 clojure 中编写一个小型测试程序 其工作原理如下 有 5 个生产者和 2 个消费者 生产者等待一段随机时间 然后将一个数字
  • 克服空数组的 ValueError

    In 这次讨论 https stackoverflow com questions 22853118 twiny in matplotlib changes the y axis scale 22856984 noredirect 1 co
  • 如何删除cllocation的缓存?

    我正在开发一个 iPhone 应用程序 它是一个位置感知应用程序 目前 除了先前位置的缓存之外 该应用程序运行良好 第一次启动应用程序位置管理器会获取当前位置 然后根据当前位置显示附近的事物 但从下一个开始 它会使用之前获取的位置 直到我重
  • 在 php 中解析 mIRC 颜色

    我想转换mirc 颜色代码 http www mirc com help colors html通过 php 转换为 html 这是示例 http searchirc com search php F exact T chan N 6246
  • Javascript异步执行:回调会中断正在运行的代码吗?

    我只是希望有人能为我澄清这一点 如果我使用 Node js 在服务器端运行以下代码 不在浏览器中 console log a db get select from table1 function result console log b c
  • 如何在WebBrowser控件中注入CSS?

    据我所知 有一种方法可以将 javascript 注入到 DOM 中 下面是使用 javascript 注入的示例代码webbrowser控制 HtmlElement head webBrowser1 Document GetElement
  • 在 HTML/JavaScript 扩展中使用 x-webkit-speech

    我正在尝试使用新的x webkit speech简单 HTML JavaScript 扩展中的函数谷歌浏览器 http en wikipedia org wiki Google Chrome 然而 我已经尝试并尝试查看一堆示例 但无法让它成
  • Number 上的 QueryDSL Like 操作

    我必须用通配符搜索数字字段 相应的 JQPL 查询将如下所示 SELECT e From Entity e where e personNumber LIKE numberPattern numberPattern 是一个像这样的字符串 1
  • Git-svn 可以在大型分支存储库上使用吗?

    我正在尝试使用 Git 作为 SVN 存储库的前端 以便能够使用 Git 的优秀功能 例如简单的分支 存储等 问题是 SVN 存储库非常大 8 000 转 并且包含大量分支和标签 旧的和新的 这是一个接近标准的布局 配置包含获取 分支和标签
  • AngularJS 返回 Object 对象

    我有一个返回数组的后端 REST 服务 我正在尝试在我的其中之一中显示此 REST 服务返回的值
  • 改进快速排序

    如果可能 我如何改进以下快速排序 性能方面 有什么建议么 void main quick a 0 n 1 void quick int a int lower int upper int loc if lower
  • 是否可以在 C# 中使用非类型化泛型列表?

    我正在尝试以下设计但没有成功 abstract class Foo
  • data.table 重复后截断行

    假设我有以下数据集 library data table dt lt data table x c 1 2 4 5 2 3 4 gt dt x 1 1 2 2 3 4 4 5 5 2 6 3 7 4 我想在第 4 行之后截止 因为那时出现了
  • Mongo中的套接字超时异常

    我看到几个MongoExceptions引起的SocketTimeoutException 请参阅下面的堆栈跟踪 也就是说 客户端在超时 30秒 内没有得到响应 现在我想知道如何解决它 简单的解决方案是增加超时 但我想首先了解根本原因 你有