【问题标题】:Socket timeout exception in MongoMongo中的套接字超时异常
【发布时间】:2014-03-04 15:29:10
【问题描述】:

我看到一些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。 (响应.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)

【问题讨论】:

    标签: mongodb


    【解决方案1】:

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

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

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

    2. 使用自定义 keep-alive,定期使用相同的连接池 ping mongod 服务器,因此池保持新鲜。

    选项 1 很容易实现,但是默认的 socket 超时时间是 30s 左右,这个时间太长了。您可以根据需要更改此设置。

    选项 2 有点小技巧,涉及线程。

    【讨论】:

      猜你喜欢
      • 2011-11-02
      • 1970-01-01
      • 2012-09-06
      • 2012-10-24
      • 1970-01-01
      • 2014-06-05
      • 2011-05-12
      • 2019-10-21
      • 2019-08-13
      相关资源
      最近更新 更多