[firebase-br] Limites do Firebird

Campus campus em sinos.net
Qui Fev 15 12:12:39 -03 2007


Eduardo me esclarece uma coisa, como essas conexões são contadas, é algo
entre a FBCclient->FBServer, ou cada objeto XConnection da aplicação ?


----- Original Message ----- 
From: "Eduardo Jedliczka (TeamFB)" <jedyfb em gmail.com>
To: "FireBase" <lista em firebase.com.br>
Sent: Wednesday, February 14, 2007 6:32 PM
Subject: Re: [firebase-br] Limites do Firebird


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


______________________________________________
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


-- 
No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.5.441 / Virus Database: 268.17.39/686 - Release Date: 14/02/2007
07:54






Mais detalhes sobre a lista de discussão lista