程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Mongo中的套接字超时异常大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Mongo中的套接字超时异常?

开发过程中遇到Mongo中的套接字超时异常的问题如何解决?下面主要结合日常开发的经验,给出你关于Mongo中的套接字超时异常的解决方法建议,希望对你解决Mongo中的套接字超时异常有所启发或帮助;

这些超时是否在闲置一段时间后发生?空闲时间过长后,连接池可能已过时。

如果是这样,有两种解决方法:

  1. 捕获套接字超时异常,您的直接请求应该能够访问新的连接池。(这是如果连接对象中的auto-reconnect选项保留为true,这是默认设置。)

  2. 使用自定义的保持活动状态,使用相同的连接池定期对mongod服务器执行Ping操作,以便该池保持最新状态。

选项1易于实现,但是默认的套接字超时约为30秒,这非常过分。您可以根据需要更改此设置。

选项2有点破烂,涉及线程。

解决方法

我看到了一些MongoExceptions原因SocketTimeoutException(请参阅下面的堆栈跟踪)。也就是说,客户端无法在超时(30秒)内获得响应。现在我想知道如何解决它。

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

由java.net.SocketTimeoutException引起:读取超时

                 java.net.SocketInputStream.socketRead0(本机方法)
                        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)

大佬总结

以上是大佬教程为你收集整理的Mongo中的套接字超时异常全部内容,希望文章能够帮你解决Mongo中的套接字超时异常所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: