0

在我们的 WSO2 设置中,每当 APIm 出现时,它都会为 PostGres DB 创建近 50 多个 DB 连接。在稳定阶段,每个 APIm 实例只有 4 个 DB 连接。我想了解为什么它在启动时需要 50 多个连接?这是一个错误还是设计使然?

我们在 kubernetes 设置中运行 WSO2,PostGres 的最大连接限制设置为 100,并且由于这个问题,两个 APIm 实例无法启动。

4

1 回答 1

0

在 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

[2] http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html

于 2021-02-18T18:18:39.430 回答