在 Windows 服务器上运行的 Oracle 的典型最大数据库连接数是多少?

Sak*_*ake 5 oracle database connection

我们正在维护一个为大量客户端提供服务的数据库服务器。每个客户端通常运行多个客户端应用程序。与数据库服务器 (Oracle 9i) 的连接总数在峰值负载时达到 800 个连接。Windows 2003 服务器开始耗尽内存。我们现在计划迁移到 64 位 Windows 以获得更高的内存容量。作为开发人员,我建议转向具有连接池的多层架构,我认为这是解决此问题的自然方法。但是,为了支持我的想法,我需要以下信息:

  1. Oracle 数据库允许的典型连接数究竟是多少?
  2. 连接数过高会出现什么问题?内存消耗太大?或者打开了太多的套接字?或者线程之间的上下文切换太多?
  3. 具体地说,Oracle Forms 应用程序如何在不面临此问题的情况下扩展到数千个用户?Oracle RAC 是否适用于这种情况?

我确信这个问题的答案应该取决于很多因素,比如所用硬件的确切规格。我期待一个粗略的估计或一些来自现实世界的经验。

spl*_*tne 7

为了处理数据库连接,需要一个单独的 Oracle 进程,这可能需要多达 2 MB 的内存。通常,Oracle 安装会根据可用内存和 CPU 配置限制并发连接数。

例如,假设您在数据库上有 50 个客户帐户,每个帐户最多有 100 个并发连接。如果每个帐户平均仅使用 25% = 25 个连接,则总平均连接数将为 1250 个连接。这意味着 2500 MB 仅用于存储连接特定的数据。上下文切换还需要处理器时间。

通过对并发连接设置限制,您可以确保您的事务通过,并且一些非常活跃的客户帐户不会开始阻塞您的数据库服务器的资源。连接数受会话参数和您的许可的限制。session 参数控制连接总数,包括 Oracle 后台进程。

使用 64 位 Windows 平台向服务器添加更多 RAM 是个好主意,因为您不必花费太多,甚至添加 16 GB 内存。

有关配置如何在实际工作负载场景中执行的详细信息,请阅读Oracle E-Business Suite Standard Benchmark。通常,它们具有大量连接。