登录
首页 >  Golang >  Go问答

是否有关于Mongodb设置 minPoolSize 的限制?

来源:stackoverflow

时间:2024-02-19 09:18:24 295浏览 收藏

在IT行业这个发展更新速度很快的行业,只有不停止的学习,才不会被行业所淘汰。如果你是Golang学习者,那么本文《是否有关于Mongodb设置 minPoolSize 的限制?》就很适合你!本篇内容主要包括##content_title##,希望对大家的知识积累有所帮助,助力实战开发!

问题内容

我正在尝试使用 mongodb 配置到我的 go 程序的池连接,其中我使用 mongodb go 驱动程序将 minpoolsize 设置为 20 个连接。类似这样的事情:

cli, err := mongo.Connect(ctx, options.Client().ApplyURI(uri).SetMinPoolSize(20).SetMaxConnIdleTime(time.Second*5))

我做了一个测试,我的程序达到了允许的 100 个连接。 5秒后,连接数下降到10个。但它应该保留20个连接。如果我将 minpoolsize 设置为 5,则可以正常工作。

10 个连接是 mongodb minpoolsize 的限制吗?如何更改它以保留 20 个连接?


正确答案


您将最大连接空闲时间设置为 5 秒。引用自ClientOptions.SetMaxConnIdleTime()

你设置的5秒意味着如果一个连接在池中并且5秒内没有使用,它可以从池中删除。

您说您等待了 5 秒,然后您发现池中的连接已关闭。这是预期/允许的行为。

如果您希望连接无限期地保持活动状态,请不要设置最大连接空闲时间,或显式设置 0

cli, err := mongo.Connect(ctx, options.Client()
    .ApplyURI(uri)
    .SetMinPoolSize(20)
    .SetMaxConnIdleTime(0))

您可能会问,如果仍然可以从中删除连接,那么设置最小池大小有什么意义。是的,确实如此,但仅限于空闲时间到期后。池大小的峰值可能会高于允许的最小值,例如如果您将 20 个设置为最小值,并且需要 100 个连接,则可能会创建 100 个连接。如果所有这 100 个连接都空闲,您可以确保至少 20 个连接在空闲时间内保持活动状态。如果最小池大小设置为 10,则只能保证 10 个保持活动状态。

好了,本文到此结束,带大家了解了《是否有关于Mongodb设置 minPoolSize 的限制?》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>