[firebase-br] Limites do Firebird
Eduardo Jedliczka (TeamFB)
jedyfb em gmail.com
Qui Fev 22 18:33:26 -03 2007
Sinceramente, eu DUVIDO que você esteja utilizando NetBeui via WEB... e este
limite SÓ EXISTE para o NetBeui.
Aplicativos WEB só utilizam o TCP/IP, já que via NetBeui dá para invadir
muito facilmente seu computador, pois não há um controle muito eficiente das
informações...
Sendo assim, se você tiver 300 usuários, usando 100 bancos você terá 30.000
conexões via WEB e funcionará tudo corretamente.
Apenas preste atenção à duração destas transações para você não ter
problemas com a performance....
Sem mais,
Eduardo Jedliczka
DBA - Bonagura
----- Original Message -----
From: "Miguel" <miguel em franca.sp.gov.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Thursday, February 15, 2007 5:59 PM
Subject: Re: [firebase-br] Limites do Firebird
Bom.
Cada banco em servidores diferentes é inviável, impossível, fora de
cogitação, improvável, inimaginável, inadmissível ou qualquer
"in","im","des","etc.."(rsrsrs) que você souber, visto que temos mais de 60
bancos diferentes no SQL Server. (Estamos migrando!).
Mas você disse que se eu tiver três objetos de conexão na minha aplicação,
apontando para bancos diferentes num mesmo servidor, o Firebird conta como
sendo três conexões. Tá, mas e se eu abrir essa aplicação em 4 estações
diferentes?! Serão ainda as mesmas 3 conexões ou agora serão 12(3 conexões
vezes 4 máquinas)? Eu queria ter um número aproximado ou exato disso porque
o tal do 930 num me sai da cabeça. Explico. Tenho uma DLL que faz as
conexões pra mim. Em uma conexão, o usuário só faz selects na outra o resto
(insert, update, delete). Isso pra controle meu. Então, para cada banco eu
já faço duas conexões. Na aplicação em questão, tenho somente 5 usuários.
Mas, se todos abrem ao mesmo tempo eu tenho 10 conexões. É isso?! Porque se
for, quando eu tiver 465 usuários (Não é dificil isso em WEB!!) fazendo duas
conexões chego no tal número 930.
Porque essa preocupação?! O Primeiro sistema que vou migrar trabalha com 9
bancos diferentes. O Segundo trabalha com 13 bancos. (Eu tenho só em
sistemas Cliente/Servidor um número aproximado de 68.
Se eu migrar só os 2 sistemas citados então cada usuário com os dois
sistemas abertos teria 24 conexões!
E aí.. Como isso funciona?!
----- Original Message -----
From: Eduardo Jedliczka (TeamFB)
na prática, você pode ter várias conexões entre um computador e outro
numa mesma porta / protocolo.
se você usa eventos, você tem conexões entre o cliente e o servidor
independente das suas conexões principais, se utiliza serviços como GBAK,
GFIX, também tem outras conexões. mas em resumo cada Tconnection é uma
conexão. Se tiver conectado em 3 bases diferentes, terá (pelo menos) 3
conexões simultâneas.
Sucesso,
Eduardo Jedliczka
Membro do TeamFB
----- Original Message -----
From: "Campus"
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)
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
______________________________________________
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