Delphi Firebird 2.0 muito lento via internet

Delphi

14/08/2009

Tenho um sistema cliente/servidor com SocketServer, na rede local, funciona que é uma bala.

Mas tenho um cliente que tem uma estação de trabalho fora da rede local, como ele não tem IP fixo, usamos o NOIP no servidor.
Acessando via internet o programa fica extremamente lento.

Gostaria de receber algumas dicas de como melhora a velocidade, sendo que o cliente não está disposto a investir R$.

O computador onde o firebird está instalado é um XP e não é dedicado, eu uso TSQLConection+TSQLDataSet+TDataSetProvider+TclientDataSet com BorlandSoketServer.

Recentemente fiz uns testes com IP Fixo e não percebi diferença em relação ao NOIp, o que percebi é que tem muita diferença em relação a extensão do arquivo, por exemplo .GDB é muito mais lento que .FDB.

Fico no aguardo de algumas dicas.


Diegotiemann

Diegotiemann

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

14/08/2009

o sistema deveria ser em camadas...


GOSTEI 0
Osocram

Osocram

14/08/2009

eu acho q ip fixo ou não. Não interfere na velocidade.

O que interfere é o banco e o servidor de aplicação serem dedicados, e de preferencia o banco ser linux

Isso ja é um começo p melhorar a velocidade
Ter o sistema em 3 camadas vai ajudar tbm.
Fazer um tunning nos seus sql´s


GOSTEI 0
Diegotiemann

Diegotiemann

14/08/2009

Continuei pesquisando e encontrei um tal de Zebedde.

Em alguns lugares dizia que ele ajuda na questão da velocidade, mas tbm encontrei váriso usuários dizendo que não teve diferença.

Alguém de vcs já usou ele?


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

14/08/2009

você pode implementar um compactador - via intercept GUID - que será utilizado pelo SocketConnetion e/ou pelo SocketServer.

o Delphi traz um exemplo: intrcpt.dpr
esse projeto irá gerar uma dll que deverá ser instalada tanto nos clientes quanto no servidor.

estude a propriedade InterceptGUID do objeto SocketConnetion.


GOSTEI 0
Osocram

Osocram

14/08/2009

Olha eu entrando de bicudo aqui...
XD
Nossa... isso é mto interessante.

Lembro que um amigo meu usava um componente para conectar no banco, acho q era do DevExpress ele ja tinha essa opção de compactar os dados antes de transmitir....
Mas eu gosto de usar copmonentes nativos do delphi e não sabia como implementar isso...
Vou dar uma olhada nisso tbm..

você pode implementar um compactador - via intercept GUID - que será utilizado pelo SocketConnetion e/ou pelo SocketServer. o Delphi traz um exemplo: intrcpt.dpr esse projeto irá gerar uma dll que deverá ser instalada tanto nos clientes quanto no servidor. estude a propriedade InterceptGUID do objeto SocketConnetion.



GOSTEI 0
Emerson Nascimento

Emerson Nascimento

14/08/2009

lembrando que o intercept pode ser indicado para uma porta específica.

você pode, por exemplo:
- deixar a porta 211 para as conexões internas, sem o intercept (compactador) e;
- deixar a porta 212 para as conexões externas, usando o intercept nesta porta.

trabalho desta forma e posso dizer: a diferença é absurda! nas conexões internas não faz diferença (às vezes fica até pior, por conta de ter de compactar e descompactar os dados) mas nas conexões externas a diferença é nítida. o sistema roda em conexões discadas sem gargalo, como se estivesse numa rede interna.


GOSTEI 0
POSTAR