在我们的 WSO2 设置中,每当 APIm 出现时,它都会为 PostGres DB 创建近 50 多个 DB 连接。在稳定阶段,每个 APIm 实例只有 4 个 DB 连接。我想了解为什么它在启动时需要 50 多个连接?这是一个错误还是设计使然?
我们在 kubernetes 设置中运行 WSO2,PostGres 的最大连接限制设置为 100,并且由于这个问题,两个 APIm 实例无法启动。
在我们的 WSO2 设置中,每当 APIm 出现时,它都会为 PostGres DB 创建近 50 多个 DB 连接。在稳定阶段,每个 APIm 实例只有 4 个 DB 连接。我想了解为什么它在启动时需要 50 多个连接?这是一个错误还是设计使然?
我们在 kubernetes 设置中运行 WSO2,PostGres 的最大连接限制设置为 100,并且由于这个问题,两个 APIm 实例无法启动。
在 WSO2 平台中,Tomcat JDBC 池被用作默认池框架,因为它具有生产就绪的稳定性和高性能。调整池属性的目标是维护一个足够大的池来处理峰值负载,而不会不必要地利用资源。这些池配置通常可以在<PRODUCT_HOME>/repository/conf/datasources/master-datasources.xml文件中针对您的生产服务器进行调整。这适用于您使用的 APIM 版本小于或等于 2.6。如果您使用的是 APIM-3.XX,那么这些配置可以在<PRODUCT_HOME>/repository/conf/deployment.toml文件中找到。
调整连接池时应考虑以下参数:
maxActive 值是可以同时从连接池中分配的最大活动连接数。默认值为 100 maximum latency (approximately) = (P / M) * T
。
M = maxActive value
P = Peak concurrency value
T = Time (average) taken to process a query
因此,通过增加 maxActive 值(达到预期的最高并发数),请求在队列中等待释放连接的时间将会减少。但在增加最大之前。活动值,请咨询数据库管理员,因为它会在高峰时间从单个节点创建最多 maxActive 连接,并且 DBMS 可能无法处理这些活动连接的累积计数。
请注意,此值不应超过数据库允许的最大请求数。
有关该主题的更多详细信息,请参阅官方文档[1, 2]。
[1] https://docs.wso2.com/display/ADMIN44x/Performance+Tuning#PerformanceTuning-JDBCpoolconfiguration