在 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 服务器统计数据:
- 8 GB RAM
- 双核
- ~2000 用户(高峰时段)
- 平均 cpu 利用率 13.5%
MySql 服务器统计:
- 最大支持同时连接:300
- 写入 IOPS (QPS) 23.1/秒
- 读取 IOPS 1/秒
- 内存使用:2.5/15gb
根据您的说法,对于上述配置,odbc_pool_size 什么是好的? (我在想 50 左右的东西?)
与任何池一样,它的大小决定了可以并行处理的请求数。如果您的池大小为 10,则只能并行处理 10 个请求,其他请求排队。这意味着如果您有 100 个用户同时尝试连接,最后一个要处理的用户将不得不等待 10 批查询被处理,从而增加了延迟。
增加池大小可以帮助减少延迟,直到数据库无法处理更多的并行性并且全局性能将下降。好的价值取决于您的数据库大小、您的用例和您的整体架构。
您需要执行基准测试和实验以根据您自己的情况调整大小,因为它实际上取决于实际流量模式。
在 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 服务器统计数据:
- 8 GB RAM
- 双核
- ~2000 用户(高峰时段)
- 平均 cpu 利用率 13.5%
MySql 服务器统计:
- 最大支持同时连接:300
- 写入 IOPS (QPS) 23.1/秒
- 读取 IOPS 1/秒
- 内存使用:2.5/15gb
根据您的说法,对于上述配置,odbc_pool_size 什么是好的? (我在想 50 左右的东西?)
与任何池一样,它的大小决定了可以并行处理的请求数。如果您的池大小为 10,则只能并行处理 10 个请求,其他请求排队。这意味着如果您有 100 个用户同时尝试连接,最后一个要处理的用户将不得不等待 10 批查询被处理,从而增加了延迟。
增加池大小可以帮助减少延迟,直到数据库无法处理更多的并行性并且全局性能将下降。好的价值取决于您的数据库大小、您的用例和您的整体架构。
您需要执行基准测试和实验以根据您自己的情况调整大小,因为它实际上取决于实际流量模式。