DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

Fórum DevMedia


Autor
Mensagem
Anderson Willians
 


País: Brasil
Estado: SP
Cidade: Guarulhos
Mensagens: 7
 Postado em: 17/1/2011 02:22:27 PM
 
Uso o Delphi2010 e criei um sistema em DataSnap
Tenho um servidor ( Windows Server 2008 ) dedicado ao Servidor de Aplicativos (Server.exe), acessando um banco de dados em um linux ( BD em Firebird ).
Tenho aproximadamente 50 terminais usando o sistema cliente ( Cliente.exe ).
Segui os passos da revista clubedelphi para criar todo o projeto.

Durante uns 2 horas funciona que é uma beleza, só que se ocorre um erro no Servidor de Aplicações ( Server.exe ) 
ele trava e todos os clientes travam tb.
Preciso reiniciar o aplicativo do servidor.

Será que tem uma forma de ocorrer o erro, porém, não travar ?

Obrigado.
LEONARDO XAVIER
 

 


País: Brasil
Estado: RS
Cidade: São Gabriel
Mensagens: 745
 Postado em: 18/1/2011 09:16:48 AM
 
Aparece alguma mensagem de erro para você ou simplesmente seu sistema trava?
Anderson Willians
 


País: Brasil
Estado: SP
Cidade: Guarulhos
Mensagens: 7
 Postado em: 18/1/2011 10:41:36 AM
 
Tem vezes que não aparece nenhum erro, outras vezes aparece o erro: " write error ", coisa assim.
ai só reiniciando o sistema servidor.exe
Já coloquei o Delphi para depurar o sistema e deixa-lo , ate aparecer o erro, mas se trava uma vez, o sistema cliente.exe, precisa sair e entrar de novo.
Isso e complicado.
Sei que trava, por causa de um ou mais erros, mas ficar esperando o erro aparecer, para corrigi-lo. O pessoal me mata rs.
Tem alguma idéia ?

Obrigado.
LEONARDO XAVIER
 

 


País: Brasil
Estado: RS
Cidade: São Gabriel
Mensagens: 745
 Postado em: 18/1/2011 10:50:16 AM
 
Se o erro é write error. Com toda certeza é algum módulo do cliente que esta tentando gravar algum registro no sistema server o interesante sertia você ficar atento em qual tela do cliente o erro é apresentado, seu sistema tem algum módulo de visualização de processos dos clientes no servidor? Com toda certeza algum cliente deve estar visualizando uma mensagem de erro "bem bonita" rsrsrs com todas as informações que você precisa.
Anderson Willians
 


País: Brasil
Estado: SP
Cidade: Guarulhos
Mensagens: 7
 Postado em: 18/1/2011 10:59:11 AM
 
Obrigado Leonardo.

Vou ter que monitorar, o cliente também.
O meu problema, e que o sistema e grande, e saber qual foi vai ser complicado, somente na hora do erro mesmo.
As vezes nem o cliente mostra o erro. ( outros erros )
E coisa de teste mesmo, ficar emcima e corrigir tudo rs.

Mas , essa e a nossa vida né, melhorar sempre.

Obrigado, Abraços

Emerson
 

 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 938
 Postado em: 18/1/2011 01:19:13 PM
 
há alguns anos me deparei com um erro desses... era um cálculo...

acho que era um cálculo de comissão no aplicativo servidor. algo mais ou menos assim:

cdsComissaoValor.Value := cdsFATURAS.Value * (cdsVendedorComissao.Value / 100);

o erro ocorria quando um desses valores era null. tive que trocar todos os .Value por .AsFloat e o problema foi resolvido. a partir desse dia deixei de usar .Value e sempre referencio o tipo correto do campo (AsString, AsFloat, AsDateTime, AsSQLTimeStamp, etc).

veja se não é algo do tipo.


Anderson Willians
 


País: Brasil
Estado: SP
Cidade: Guarulhos
Mensagens: 7
 Postado em: 18/1/2011 01:40:33 PM
 
Pois é, são detalhes assim, que ocorre um erro, e nos preocupamos demais.
Vou analisar todo os processos em meu sistema servidor.
Já no cliente, vai ser demorado, porém, tem que ser feito né.

Fiz uma coisa aqui em meu servidor.

coloquei o componente ApplicationEvents. Assim que ocorrer um erro, peço para ele me mostrar qual foi.
E ocorreu um erro, só que ao invés de corrigi-lo ( que é o correto ) Fechei a conexão e abri novamente.
Resultado : não travou mais.
Agora posso deixar o povo conectado e trabalhando, enquanto eu pego os erros e corro atrás para concerta-los.
pois não posso deixar o sistema parado.

Sei que não é o certo, mas, por enquanto terá que ser assim, até analisar tudo.
Também, não sei se estou certo fazendo isso, mas pelo menos, o servidor ( aplicação ) não trava.

Obrigado,pela ajuda Amigos.
LEONARDO XAVIER
 

 


País: Brasil
Estado: RS
Cidade: São Gabriel
Mensagens: 745
 Postado em: 19/1/2011 10:03:54 AM
 
Nao esqueça de finalizar o tópico. isso ajuda a manter o forum organizado. Abraços
Anderson Willians
 


País: Brasil
Estado: SP
Cidade: Guarulhos
Mensagens: 7
 Postado em: 19/1/2011 10:07:52 AM
 
Vou finalizar, não sabia deste requisito.
Muito obrigado pela ajuda.

Abraços.
Emerson
 

 


País: Brasil
Estado: SP
Cidade: São Paulo
Mensagens: 938
 Postado em: 19/1/2011 10:58:03 AM
 
Anderson, verifique também as possíveis divisões por 0, que podem causar o mesmo problema.

imagine o código:
Percentual := cdsFATURAS.Asfloat / cdsVendedorComissao.AsFloat;

se houver a possibilidade do divisor - no caso, cdsVendedorComissao.AsFloat - ser 0 (zero), faça uma avaliação antes ou coloque a operação num try..except.


if cdsVendedorComissao.AsFloat <> 0 then
  Percentual := cdsFATURAS.Asfloat / cdsVendedorComissao.AsFloat
else
  Percentual := 0;

ou

try
  Percentual := cdsFATURAS.Asfloat / cdsVendedorComissao.AsFloat
except
  Percentual := 0;
end;



Anderson Willians
 


País: Brasil
Estado: SP
Cidade: Guarulhos
Mensagens: 7
 Postado em: 19/1/2011 11:43:33 AM
 
Pode deixar, vou olhar bem as rotinas e funções e procurar esse tipo e outro iguais a esse ai.

Estou já dando uma varredura, e isso que me mostrou me ajudou a prestar mais atenção em minhas funções.

Vou olhar melhore ver os blocos de try, e lhe passo o que achar de erro, para ajudar outras pessoas também, caso o meu erro sirva de ajuda a todos.


Emerson, Muito Obrigado.

Abraços.
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03