【问题标题】:MongoDB: How often should you open and close the database? Why?MongoDB:您应该多久打开和关闭一次数据库?为什么?
【发布时间】:2011-09-10 19:34:39
【问题描述】:

对于每个请求,我都在打开数据库、查询、关闭数据库。

我偶尔会遇到connection already opened 问题。

我最终将配置更改为只打开 mongo 并保持打开状态。

这种方法有什么缺点?

谢谢!

(注意:使用 node.js)

【问题讨论】:

    标签: mongodb node.js


    【解决方案1】:

    我看起来好像你应该打开一次连接并继续重复使用它,至少使用 node-native-driver。驱动程序开发人员对主题的评论可在此处找到:https://github.com/mongodb/node-mongodb-native/issues/84

    【讨论】:

      【解决方案2】:

      这里的答案取决于您运行的版本。 main github page 上描述的方法涉及“根据需要”打开/关闭连接。

      目前正在努力正确支持副本集并提供一些基本的连接池。事实上,昨天刚刚签到了clean up of pooled connections on error

      鉴于文档提供了这种打开/关闭方法,这可能是要走的路。这是我目前在我的应用程序中所做的。至于您看到的问题,这实际上可能只是一个错误。同样,驱动程序的版本是

      编辑:我应该补充一点,Christian 是一个很棒的人,他可以在 10gen 团队的有限支持下利用自己的时间完成这项工作。构建这样的驱动程序需要大量工作,因此如果您遇到重用打开连接等错误,请务必提交错误和/或提供修复。

      【讨论】:

        【解决方案3】:

        我不能代表 node.js 驱动程序,但 Java 驱动程序被设计为以这种方式使用:http://www.mongodb.org/display/DOCS/Java+Driver+Concurrency - 它在内部处理连接。也许 node.js 驱动程序也是如此。也许值得向驱动程序的开发人员发送电子邮件询问?

        【讨论】:

        • Java 驱动程序和 node.js 驱动程序的行为非常不同。 Java 驱动程序有一个内置的可配置连接池。 node.js 驱动正在朝那个方向发展,但 node.js 肯定是不同的。
        猜你喜欢
        • 2011-01-04
        • 1970-01-01
        • 2011-06-17
        • 1970-01-01
        • 2010-09-26
        • 2012-02-28
        • 2011-11-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多