Qual é o número máximo típico de conexões de banco de dados para o Oracle em execução no servidor Windows?

5

Estamos mantendo um servidor de banco de dados que atende a um grande número de clientes. Cada cliente normalmente executando vários aplicativos clientes. O número total de conexões com o servidor de banco de dados (Oracle 9i) está atingindo 800 conexões no pico de carga. O servidor do Windows 2003 está começando a ficar sem memória. Agora estamos planejando migrar para o Windows de 64 bits para obter maior capacidade de memória. Como desenvolvedor, sugiro mudar para a arquitetura de várias camadas com pool de conexões, o que, na minha opinião, é uma solução natural para esse problema. No entanto, para apoiar minha ideia, quero as informações sobre:

  1. qual é exatamente o número típico de conexões permitidas para o banco de dados Oracle?
  2. Qual é o problema quando as conexões numéricas são muito altas? Demasiado consumo de memória? ou muitos soquetes abertos? ou muita alternância de contexto entre threads?
  3. Para ser um pouco específico, como o aplicativo Oracle Forms poderia ser dimensionado para milhares de usuários sem enfrentar esse problema? O Oracle RAC deve ser aplicado a este caso?

Tenho certeza de que a resposta a essa pergunta deve depender de vários fatores, como a especificação exata do hardware que está sendo usado. Estou esperando uma estimativa aproximada ou alguma experiência do mundo real.

    
por Sake 29.05.2009 / 11:59

2 respostas

7

Para lidar com uma conexão de banco de dados, é necessário um processo Oracle separado, que pode exigir até 2 MB de memória. Normalmente, uma instalação do Oracle limita o número de conexões simultâneas com base na memória disponível e na configuração da CPU.

Por exemplo, digamos que você tenha 50 contas de clientes no banco de dados com um máximo de 100 conexões simultâneas por conta. Se cada conta, em média, usa apenas 25% = 25 conexões, o número médio total seria de 1250 conexões. Isso significa apenas 2500 MB para armazenar dados específicos da conexão. Há também tempo de processador necessário para troca de contexto.

Ao definir limites em conexões simultâneas, você pode garantir que suas transações sejam concluídas e que algumas contas de clientes muito ativas não comecem a bloquear os recursos do seu servidor de banco de dados. O número de conexões é limitado pelo parâmetro sessions e pelo seu licenciamento. O parâmetro sessions controla o número total de conexões, incluindo os processos em segundo plano do Oracle.

A adição de mais RAM ao servidor usando uma plataforma Windows de 64 bits é uma boa ideia, já que você não precisa gastar muito, adicionando até 16 GB de memória.

Para obter informações detalhadas sobre o desempenho das configurações em cenários realistas de carga de trabalho, leia o teste padrão do Oracle E-Business Suite Standard . Normalmente, eles têm um grande número de conexões.

    
por 29.05.2009 / 15:10
0

O Oracle no Windows abre threads do usuário, não processos, afaik. (Isso não é bom quando uma conexão do usuário trava, pois leva todos eles com.)

Isso significa que você está limitado pela memória; poucos MB de sobrecarga de sessão para thread e PGA por usuário + o contexto e a SGA que dependem do que você está fazendo. Para trabalhos leves (== usuários executando as mesmas consultas simples repetidas vezes) você só precisa contar as sessões.

    
por 31.05.2009 / 07:29