【问题标题】:Is there a limit to set minPoolSize for Mongodb?为 Mongodb 设置 minPoolSize 是否有限制?
【发布时间】:2022-02-01 16:08:36
【问题描述】:

我正在尝试使用 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 个连接?

【问题讨论】:

  • 您是否也将SetPoolMonitor 添加到您的连接中以打印池中实际发生的情况? (不确定它是否有帮助,但我们在生产中使用它来记录 MongoDB 驱动程序中发生的连接事件——因为我们还没有找到更好的方法来做到这一点。)
  • 不,我没有!但我会尝试 SetPoolMonitor。

标签: mongodb go connection-pooling mongo-go


【解决方案1】:

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

SetMaxConnIdleTime 指定连接在从池中删除并关闭之前在连接池中保持空闲的最长时间。这也可以通过“maxIdleTimeMS”URI 选项进行设置(例如“maxIdleTimeMS=10000”)。默认值为 0,这意味着连接可以无限期地保持未使用状态。

你设置的5秒是指如果一个连接在池中,5秒内没有使用,就可以从池中移除。

你说你等了 5 秒钟,你体验到池中的连接被关闭。这是预期/允许的行为。

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

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

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

【讨论】:

  • 实际上我不想无限期地保持 100 个连接。在空闲状态一段时间后,我想将连接数降低到最小池大小。当我将 minPoolSize 定义为 10 并将 maxIdleTime 定义为 5 秒时,它可以工作,它使 10 个连接保持活动状态。但是在minPoolSize中设置了10多个,它只保持10个连接
  • @Lawrence 如果您不希望 100 个连接处于活动状态,请将最大池大小设置为您希望保留的值。默认值为 100。
  • 但正如您所说,池大小可能会超过允许的最小值。如果我将 maxPool 设置为更少,我将不会为峰值做好准备。这对我来说是有道理的,留下一个峰值余量,然后减少未使用的连接数量,同时保持最低性能
  • @Lawrence 实际上检查ClientOptions.SetMaxPoolSize() 的文档我之前的评论不是真的(删除它):"SetMaxPoolSize 指定驱动程序的连接池中允许的最大连接数到每个服务器。如果达到此最大值,对服务器的请求将被阻止。"
  • @Lawrence 虽然我不认为你应该担心这个。想一想:如果你设置例如最大池大小为 100,这意味着您可以同时运行 100 个操作。你说你不会为高峰做好准备,但即使你被允许拥有 1000 个连接,那么你的 MongoDB 也会成为瓶颈,而且很可能不会比让我们说序列化你的操作更早完成100 个连接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 2017-08-11
  • 1970-01-01
相关资源
最近更新 更多