Programa não está respondendo

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
acelconsultoria
Usuário Nível 3
Usuário Nível 3
Mensagens: 231
Registrado em: 10 Jan 2006 17:05
Localização: Itápolis-SP

Programa não está respondendo

Mensagem por acelconsultoria »

Em algumas operações onde envolve um certo volume de dados na rede, aleatóriamente, um dos terminais da empresa que atendo acusa a mensagem de "Programa não está respondendo". Normalmente acontece quando o usuário tenta acessar o "Contas a Receber" ou "Contas a Pagar" e dar baixa ou desdobramento de alguma conta... mas não acontece sempre, é aleatório mesmo.

Essa empresa possui grande movimento de dados, mas há 8 meses atrás o programa era em clipper 5.3 e nunca travou nessa parte. Migrei pra xHarbour 1.0 / BCC / GTWVW / DBFCDX, tudo construído no xDev 0.70... houve uma melhora de performance, mas quando o terminal tenta acessar grandes volumes de dados no servidor, as vezes acontece isso.

A empresa possui 8 terminais, com Windows XP SP2 e o servidor tem Win2003 Server. Alguém já passou por isso ???
Adm. Maickon Sato
Consultoria e Projetos
-------------------------------------------------------
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Re: Programa não está respondendo

Mensagem por Eolo »

Sato, estou trabalhando num sistema bem parecido com esse que vc citou e conseguimos resolver problemas de lentidão deixando todos os EXEs no servidor 2003, os quais acessam a base de dados local (no proprio servidor). Nas estações, então, ficam só atalhos para os EXEs, acessados via Terminal Service. Show de bola.

Antes, com um "servidor" XP e os EXEs espalhados pelas estações, acontecia de ficar muito lerdo (quase parando) quando 2 ou mais terminais tentavam acessar o mesmo arquivo de dados no servidor. Hoje, 3 ou 4 usuários podem por exemplo acessar o mesmo DBF via tbrowse() e "grudar" o dedo no Page Down. É como se eles fossem locais e independentes.
Avatar do usuário
acelconsultoria
Usuário Nível 3
Usuário Nível 3
Mensagens: 231
Registrado em: 10 Jan 2006 17:05
Localização: Itápolis-SP

Re: Programa não está respondendo

Mensagem por acelconsultoria »

Eolo escreveu: Nas estações, então, ficam só atalhos para os EXEs, acessados via Terminal Service. Show de bola.

Todos os EXEs do meu programa ficam no servidor e são acessados pelo atalho no Desktop.... mas como funciona esse esquema de "Via Terminal Service" ????
Adm. Maickon Sato
Consultoria e Projetos
-------------------------------------------------------
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Re: Programa não está respondendo

Mensagem por Eolo »

Sato, eu não posso lhe dar muitos detalhes do TS porque foi o fornecedor do novo servidor quem instalou o Win2003 e montou o esquema todo. Mas parece bem "simples":
- como o cliente não tem IP fixo, foi criado um nome No-IP (http://www.no-ip.com), gratuito.
- no servidor, foram criados "n" usuários, um para cada estação, cada um com sua senha.
- cada usuário (em cada estação) acessa o servidor via Conexão de Área de Trabalho Remota do XP (mesmo o que estão conectados na rede local). Quando a conexão bate no servidor, o usuário acessa somente o EXE respectivo. Saiu do EXE, fecha a conexão.
- eu tenho um login próprio e, de casa, acesso o servidor, atualizo EXEs, etc. etc.
- o cliente, de qualquer lugar e a qualquer hora, acessa o EXE dele no servidor e confere o que tá acontecendo na empresa.

É show de bola.

Dá uma pesquisada aqui no Forum, deve ter mais informações a respeito.
alexpaidajulia
Usuário Nível 1
Usuário Nível 1
Mensagens: 13
Registrado em: 14 Dez 2008 06:38
Localização: japao

Re: Programa não está respondendo

Mensagem por alexpaidajulia »

Com o terminal service toda carga do servico fica sendo feita no servidor, nos terminais voce acessa digamos apenas as *telas* utilizando o rdp, ideia interessante essa, os clientes poderiam ser inclusive linux.

O problema que as lisencas sao pagas, embora exista como utilizar um crack para habilitar no windows xp esta capacidade, mas nao sei se eh estavel o suficiente para um ambiente de producao e existem outras alternativas pagas tambem.

http://sig9.com/articles/concurrent-remote-desktop

[]s

Alex
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Re: Programa não está respondendo

Mensagem por Eolo »

O AlaminoJunior acabou de montar um servidor com o TS. E eu acessei o PC dele aqui de casa, via net (moramos em Estados diferentes - SP e SC)

Quem sabe ele poderia falar mais a respeito do que ele fez?
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Re: Programa não está respondendo

Mensagem por alaminojunior »

Realmente, como muitos já tem comentado, é o estado da arte !
O colega Acel, segundo já comentou, está com a faca e o queijo na mão. (Estações WinXP e servidor Win2003Server)
No link abaixo tem os primeiros passos, para configurar o servidor.
http://www.baboo.com.br/absolutenm/temp ... 24&resumo=

Talvez depois, precise configurar o roteador de sua rede.
Mas vá postando aí que a gente se ajuda.

Pra concluir.....UM FELIZ NATAL E PRÓSPERO ANO NOVO À TODAS(OS) AS(OS) COLEGAS DO FÓRUM
QUE ESTE PERÍODO, NOS TRAGA NOVO ÂNIMO.
ABRAÇOS
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Programa não está respondendo

Mensagem por sygecom »

Realmente devo concordar que o TS é a melhor saida, porem não é pesciso usar o Windows 2003 para liberar o TS , pode ter como servidor um Windows XP SP2 mesmo. É só instalar no Windows XP o patch que libera o acesso a TS, esse patch se encontra facilmente pela internet, ou pode usar o que esta em ANEXO aqui.

Agora para resolver seu problema sem ter que usar o TS, a unica coisa que sua aplicação tem que fazer é dar um ALÔ para o Windows dizendo que ainda esta ali, para isso eu uso em rotinas longas do meu sistema a seguinte função:

Exemplo de uso:

Código: Selecionar todos

SELE ENTRADAS
DBGOTOP()
DO WHILE .NOT. EOF()
   START_PROCESSMESSAGE()  // uso esse app em modo console
   hwg_processmessage()   // uso esse em app usando HWGUI
   SYSREFRESH()   // uso esse em app usando Fivewin

   ....
   ....
   ....

   SELE ENTRADAS
   DBSKIP()
ENDDO

#pragma BEGINDUMP

#include "hbapi.h"
#include <windows.h>

HB_FUNC( START_PROCESSMESSAGE )
{
   MSG msg;
   BOOL lMdi = (ISNIL(1))? 0 : hb_parl(1);
   int nSleep = (ISNIL(2))? 1 : hb_parni(2);

   if( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) )
   {
      ProcessMessage( msg, 0, lMdi );
   }

   SleepEx( nSleep, TRUE );
}
#pragma ENDDUMP
Obs: O Anexo em alguns Anti-virus é acusado como virus, porem comigo nunca teve problemas, já usei em clientes.Usem por conta e risco.
Anexos
TerminalserverNoRestrPatch-1-1.zip
(81.01 KiB) Baixado 92 vezes
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
alexpaidajulia
Usuário Nível 1
Usuário Nível 1
Mensagens: 13
Registrado em: 14 Dez 2008 06:38
Localização: japao

Re: Programa não está respondendo

Mensagem por alexpaidajulia »

Esse problema continuaria mesmo utilizando um servidor de banco de dados?
Pelo que entendi do codigo acima seria um problema de multtasking??
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Re: Programa não está respondendo

Mensagem por alaminojunior »

Mesmo com o exemplo do Leo resolvendo o problema, vc pode começar a pensar a explorar melhor o parque que vc tem em mãos.
Você e seu cliente só têm a ganhar.
Abraços.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Programa não está respondendo

Mensagem por sygecom »

E para quem quiser usar o NO-IP para fixar um IP externo, abaixo tem um pequeno Tutorial:
http://www.no-ip.com/comecar_com_pt.php#6
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
TerraSoftware
Usuário Nível 3
Usuário Nível 3
Mensagens: 353
Registrado em: 28 Jul 2004 13:14
Localização: Cianorte-PR
Contato:

Re: Programa não está respondendo

Mensagem por TerraSoftware »

Caros colegas, já tive este problema tambem, do executavel não responder mais, isso acontece quando vc manda executar alguma rotina cujo processo demora muito, tipo um relatório que precise buscar informacoes em várias tabelas diferentes. Observei que o problema esta com o sistema operacional "achar" que o executável esta travado devido a sua demora de resposta.

Claro que usar TS é ótimo, indiscutivel, mas com o passar do tempo, com o aumento dos dados nas tabelas, o problema pode voltar mesmo usando o TS, basta a rotina ser muito grande que o problema vai aparecer novamente.

A solução do leonardo é otima nestes casos, eu nao sabia, vou aplicar isso nos meus programas, pois pelo que eu percebi a funcao que ele citou vai informar para o Sistema Operacional que o executavel ainda esta "vivo".

Eu no meu caso, resolvi o problema criando mais indexes específicos para que o programa nao ficase lento. Tambem deu certo.

Leonardo, pergunto a vc, no meu caso que uso a gtwvw, qual funcao eu devo usar? Esta: START_PROCESSMESSAGE() ???
www.sisterra.com.br
xHarbour 1.0.0 - Bcc 6.3 - Gtwvw/Hwgui
DbfCdx/MySql
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Programa não está respondendo

Mensagem por sygecom »

No caso da GTWVW pode usar GTprocessmessages()
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Re: Programa não está respondendo

Mensagem por Eolo »

isso acontece quando vc manda executar alguma rotina cujo processo demora muito, tipo um relatório que precise buscar informacoes em várias tabelas diferentes. Observei que o problema esta com o sistema operacional "achar" que o executável esta travado devido a sua demora de resposta.
Terrasoftware, explica esse trem pra mim. Não consegui entender a idéia. Talvez por não ter passado pelo problema.

Eu acho que, se o executável "está buscando informações em várias tabelas", ele está trabalhando, se movimentando, fazendo coisas, então como é que o SO pode achar que ele travou? Parece mais lógico acontecer isso se o EXE estiver em um estado de espera por muito tempo, aí faz sentido.

Não entendi isso do EXE estar trabalhando e o SO encrencar com ele.
alexpaidajulia
Usuário Nível 1
Usuário Nível 1
Mensagens: 13
Registrado em: 14 Dez 2008 06:38
Localização: japao

Re: Programa não está respondendo

Mensagem por alexpaidajulia »

trabalho com java e visual basic e nunca vi isto acontecer ate agora, mesmo com bancos de dados imensos com 20 ou mais terminais pendurados ...
por que deste problema? nas outras linguagens isto seria transparente e no xharbour teria que ser tratado manualmente?
Responder