MongoTimeoutException 消息:10000 毫秒后等待连接时超时

Posted

技术标签:

【中文标题】MongoTimeoutException 消息:10000 毫秒后等待连接时超时【英文标题】:MongoTimeoutException Message: Timed out while waiting to connect after 10000 ms 【发布时间】:2015-01-05 18:59:07 【问题描述】:

我在 grails 中使用 gorm 连接到 MongoDB。我得到了 MongoTimeOutException。 我能够使用 mongo java 驱动程序独立程序成功连接到 MongoDb。 为什么我无法通过 Grails GORM 插件连接?

有人可以帮忙吗? 下面是配置

grails 
    mongo 
      host = "localhost"
      port = 27107
      databaseName = "test"
     options
         connectionsPerHost=20
     
    
  

下面是领域类

class Device 


    String deviceType
    String deviceId
    int primary

    static constraints = 

    

下面是异常跟踪

| Error 2014-11-09 16:10:39,620 [http-bio-8080-exec-4] ERROR errors.GrailsExceptionResolver  - MongoTimeoutException occurred when processing request: [GET] /devices/Device

Timed out while waiting to connect after 10000 ms. Stacktrace follows:
Message: Timed out while waiting to connect after 10000 ms
    Line | Method
->>  131 | getDescription        in com.mongodb.BaseCluster
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|    396 | getClusterDescription in com.mongodb.DBTCPConnector
|    569 | getType . . . . . . . in     ''
|    370 | isMongosConnection    in     ''
|    645 | isMongosConnection .  in com.mongodb.Mongo
|    454 | _check                in com.mongodb.DBCursor
|    546 | _hasNext . . . . . .  in     ''
|    571 | hasNext               in     ''
|   1893 | hasNext . . . . . . . in org.grails.datastore.mapping.mongo.query.MongoQuery$MongoResultList$1
|      8 | index                 in ewents.DeviceController
|    198 | doFilter . . . . . .  in grails.plugin.cache.web.filter.PageFragmentCachingFilter
|     63 | doFilter              in grails.plugin.cache.web.filter.AbstractFilter
|    895 | runTask . . . . . . . in java.util.concurrent.ThreadPoolExecutor$Worker
|    918 | run                   in     ''
^    695 | run . . . . . . . . . in java.lang.Thread

或者有人可以分享带有 GORM 支持的示例 Grails 示例吗?我基本上是这个 Grails 的新手。

【问题讨论】:

显然,grails 无法连接到位于 localhost:27017 的 MongoDB 服务器。您是否尝试过通过 mongo shell 或 telnet 访问它? 是的,可以通过 mongo shell 访问。但是,为什么 Grails 不能连接到 localhost:27017 而一个独立的 Java 类可以呢? 两者都在同一台机器上,我猜?请提供您用于连接的确切命令行。 【参考方案1】:

我发现了这个问题。这是我的错,因为端口号是 27107 而不是 27017,我花了一天时间才弄清楚这一点。哈哈

【讨论】:

在同一个问题上杀死了 3 个小时。谢谢! 同上,很难看到转置。【参考方案2】:

我遇到了类似的问题,它表明在我的测试用例中,我没有从我期望的地方获得属性。 (我的主机在字符串中包含一个引号......)

我对以后遇到这个问题的开发者的建议是在com.mongodb.mongo.java方法“boolean isMongosConnection()”中设置一个断点,看看实际使用的是什么主机和端口。

【讨论】:

以上是关于MongoTimeoutException 消息:10000 毫秒后等待连接时超时的主要内容,如果未能解决你的问题,请参考以下文章

将MongoClient与列表ServerAddress一起使用时,com.mongodb.MongoTimeoutException

Mongo突然关闭,没有任何日志

java连接MongoDB报错解决

等待与 WritableServerSelector 匹配的服务器时,在 30000 毫秒后超时。状态 = 已连接

试用测试

SIP消息的SIP消息格式