在 ejabberd.yml 中理解 odbc_pool_size

Understanding odbc_pool_size in ejabberd.yml

在 ejabberd.yml 中我们有以下行:

##
## Number of connections to open to the database for each virtual host
##
## odbc_pool_size: 10

我们 运行 mysql 启用了 ejabberd 服务器。 MySql 服务器连接限制为 300。

在线研究(可用文档非常有限)后,似乎从默认值 10 增加 odbc_pool_size 主要影响(减少)客户端到服务器的连接时间。在一个给定的时间实例,我们平均有大约 1500 名在线用户。

我的问题:odbc_pool_size 变量的确切用途是什么。增加池大小将如何影响服务器连接时间/延迟?

更新

Ejabberd 服务器统计数据:

MySql 服务器统计:

根据您的说法,对于上述配置,odbc_pool_size 什么是好的? (我在想 50 左右的东西?)

与任何池一样,它的大小决定了可以并行处理的请求数。如果您的池大小为 10,则只能并行处理 10 个请求,其他请求排队。这意味着如果您有 100 个用户同时尝试连接,最后一个要处理的用户将不得不等待 10 批查询被处理,从而增加了延迟。

增加池大小可以帮助减少延迟,直到数据库无法处理更多的并行性并且全局性能将下降。好的价值取决于您的数据库大小、您的用例和您的整体架构。

您需要执行基准测试和实验以根据您自己的情况调整大小,因为它实际上取决于实际流量模式。