【问题标题】:How to size connection pool against Oracle Autonomous Database (ATP)?如何针对 Oracle 自治数据库 (ATP) 调整连接池的大小?
【发布时间】:2019-08-29 20:42:06
【问题描述】:

如果我在具有 1 个 OCPU 的 exadata vm 中有一个 Oracle Autonomous Database,我应该如何配置我的 jdbc 连接池?我应该指定多少个连接?最高金额是多少?

【问题讨论】:

  • 除非您不指定您的要求,否则您不能期望得到有用的答案。
  • 当您拥有物理硬件时,有一个简单的公式可以尝试找到性能最佳的池大小(请参阅github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing)。但是在这种情况下,当你从控制面板创建一个自治数据库时,你对硬件、内核、线程等一无所知,Java Web 应用程序必须使用连接池来连接。
  • 这是一个疯狂的猜测:从 5 开始,看看情况如何。如果池中没有足够的连接,请检查原因是否有效。连接是否尽快释放到池中?等等。如果您必须增加最大尺寸,请一点一点增加。

标签: oracle database-connection oracle-cloud-infrastructure exadata


【解决方案1】:

上面提供的link David Fdez 是正确的。

根据经验,为了获得最佳性能,与 Oracle 数据库的最大连接数应该是服务器拥有的硬件线程数的一小部分。这是所有客户端的总数。见https://www.youtube.com/watch?v=Oo-tBpVewP4

这并不总是实用的。如果有数百个客户端连接到小型服务器,即使每个客户端只有一个连接,也会超出限制。没关系。数据库仍然可以正常工作,但无法达到其所能达到的最大性能;它将花费比理想情况更多的时间进行上下文切换。经验法则仍然有用。它告诉我们每个客户端应该只有一个连接,而不是 20 个。

反对意见是,只有一个连接,客户端请求必须等待连接。这是真的,但如果有 20 个连接,客户端将不会等待连接。相反,当服务器在大量数据库进程之间进行上下文切换时,他们将等待更长时间。如果每个客户端连接 20 个而不是 1 个,系统的整体性能会差很多。

【讨论】:

    【解决方案2】:

    只需 1 个 OCPU,您就应该能够利用至少 100 个会话(取决于使用适当的服务和并行性等)。另请参阅,Use Database Resident Connection Pooling with Autonomous Database

    【讨论】:

      猜你喜欢
      • 2022-03-10
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 2022-01-08
      • 2023-01-21
      • 2013-08-12
      • 2012-09-07
      • 1970-01-01
      相关资源
      最近更新 更多