[firebase-br] Limites do Firebird

Eduardo Jedliczka (TeamFB) jedyfb em gmail.com
Qua Fev 14 19:32:03 -03 2007


Bom, vamos lá.

Quando eu falar processador, leia-se núcleo de processamento.

Não conheço pessoalmente, e segundo algumas informações sobre casos de 
sucessos do FB SuperServer com mais de 80 conexões concorrentes numa base 
com mais de 5 milhões de registros. O problema é o consumo de memória e CPU 
(o SS só endereça 2GB de ram, e só utiliza um processador).

O Classic Server, mesmo gastando mais CPU e muuuuito mais memória, pode 
endereçar 2GB por conexão mas cada processo roda num único processador. Isto 
significa, que num servidor multiprocessado com vários GB de ram, o classic 
consegue atender infinitamente mais conexões do que o Super Server. E há 
casos de sucesso com mais de 300 conexões concorrentes num FireBird classic. 
(eu particularmente vejo comumente até 180 concorrentes).

Mas há um detalhe, o  limite do NetBEUI  não tem nada a ver com o limite do 
TCP/IP ou de conexões locais.  Se não me engano, o limite de conexões do 
TCP/IP para uma única porta é 16381 (2^16 - 3) mas cada coxeção consome 
memória e principalmente CPU.

Se você tiver vários servidores WEB apontando para um único servidor de 
banco de dados, precisa pensar muito no tempo de transação (e consumo de 
memória e processador). Se precisar dar um sort com algumas dezenas/centenas 
de milhares de registros... aquele Dual Xeon 3535 (quad-core) com 32 GB de 
ram pode ser insuficiente para atender 4 ou 5 mil conexões. Em 
contrapartida, se você tiver tabelas extremamente normalizadas, com índices 
eficientes, e selects com pouquíssimos registros sem group by ou sorts 
grandes, e não utilizar blobs, talvez um Pentium 4 com 1 ou 2 gb de ram 
consiga atender mais do que mil conexões concorrentes.

Sendo assim, eu recomendaria, (até por uma questão de segurança e custos), 
colocar cada banco de dados num servidor diferente (não pelo limite de 
conexões, mas sim pelo custo de se ter um servidor parrudo).

Sucesso,

Eduardo Jedliczka
Membro do TeamFB

----- Original Message ----- 
From: "Miguel" <miguel em franca.sp.gov.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Wednesday, February 14, 2007 10:08 AM
Subject: [firebase-br] Limites do Firebird




Dominando Firebird (Helen Borrie)

Apêndice VII - Limites do Firebird (Pagina 861)

Objeto Servidor:
Número Máximo de Clientes conectados: Firebird 1.5 (1024 TCP/IP)

Comentário: "O limite teórico menor para os pipes com nome do Windows 
(NetBEUI) - o servidor provavelmente ficará suspenso com mais de 930 
conexões concorrentes. Como uma diretriz prática, trabalhe com base em um 
máximo de em torno de 150 clientes concorrentes do SuperServer para uma 
aplicação interativa normal em um servidor de especificação baixa a média, 
com contenção baixa a moderada, antes que o desempenho possa fazer você 
considerar um upgrade. Para o servidor Classic, os números podem ser mais 
baixos porque cada cliente consome mais recursos."

Muito bem.

Sobre esse limite, perguntas:

1 - Essas 930 conexões são contadas de que jeito? São 930 conexões 
diferentes num mesmo banco (arquivo .fdb)? Numa mesma tabela de um 
determinado banco? Ou num mesmo servidor onde temos vários bancos?

2- Esse limite é por IP? Ou seja, 930 IP´s diferentes podem conectar-se 
quantas vezes quiser? (Fizemos um teste em uma máquina e conseguimos abrir 
pouco mais de 2000 conexões. Travamos num "Out of memory"). Mas isso era um 
único e solitário IP. Por isso essa dúvida.

3 - Seria essas 930 conexões o número máximo de transações abertas ou 
transações num tem nada a ver com isso?

Imagine uma aplicação WEB que faça conexões com os seguintes bancos:
a - geral.fdb (Onde concentramos tabela que todos os demais usam. Ex.: 
Tabela de Rua, Tabela de Bairro, Tabela de Feriado, etc..)
b - biblioteca.fdb (Cadastro de Livros, empréstimos, reserva, "Clientes"*, 
etc.)
c - folha_pagto.fdb ("Funcionário"*, Vencimentos, Lançamentos, etc..)

Agora imagine que há um certo link entre a Tabela Clientes (biblioteca) e a 
tabela Funcionário (folha_pagto) de forma que eu só aceito clientes para a 
biblioteca que tenha sido indicado por um funcionário 
(CodFuncionarioResponsavel)..

Ao rodar isso na WEB, terei que fazer uma aplicação com as 3 conexões. Nesse 
contexto, estaria eu atingindo  930 conexões ao abrir o aplicativo em 310 
máquinas diferentes e a "sortuda" máquina 311 não teria acesso na aplicação. 
É isso?! Alguém já testou esse limite?!

Espero as considerações dos colegas.

Obs.: Estamos migrando de SQL Server para o Firebird, mas antes gostaria de 
entender bem esse limite do objeto servidor.

______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para editar sua configuração na lista, use o endereço 
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa 





Mais detalhes sobre a lista de discussão lista