Travando todo sistema

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

querentino
Usuário Nível 1
Usuário Nível 1
Mensagens: 25
Registrado em: 28 Jan 2009 19:53
Localização: Guarulhos - São Paulo

Travando todo sistema

Mensagem por querentino »

Olá bom dia, estou com 1 problema que está tirando meu sono.
Não consigo entender quando e em qual cpu acontece o problema. Ele simplesmente trava todos os sistema, tendo que reiniciar o servidor para voltar ao normal. Os sistemas fica paralizados tentando acessar o BD. Não consegue acessar nem abrindo novamente o sistema, somente reiniciando o servidor tudo volta ao normal. O pior é que isso tem dia que acontece 4 ou mais vezes, tem dia que não acontece.

Uso Clipper 5.3 rtlink 7.0 e todas as maquina com xp que são 10 ao total.

alguma ajuda por favor, obrigado desde já.
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Travando todo sistema

Mensagem por rochinha »

Amiguinho,

Voce esta usando o método:

- sistema somente no servidor e atalhos/mapeamentos nos clientes?
ou
- somente dados no servidor e cópias do sistema em cada cliente?

Com os dados no servidor, se uma das maquinas estiver travando voce com certeza conseguirá saber qual maquina travou, ou em qual tela de seu sistema isto provocou a trava.

Se o sistema estiver no servidor, ficará mais dificil, a não ser que voce, ative maquina por maquina, ou use um esquema de log para tentar detectar qual a ultima maquina parou.

Se o seu sistema usar arquivos .CH voce poderá incluir as seguintes linhas no .PRG principal e compilar:

Código: Selecionar todos

#command APPEND BLANK => dbAppend( 0 ) ; dbCommitLog( 'I', PROCNAME() )
#command PACK               => __dbPack() ; dbCommitLog( 'E', PROCNAME() )
#command ZAP                 => __dbZap()  ; dbCommitLog( 'E', PROCNAME() )
//#command COMMIT       => dbUnlock() ; dbCommit()
#command COMMIT          => dbCommit()
#command REGLOCK        => dbRegLock( 0 ) ; dbCommitLog( 'M', PROCNAME() )
#command REGLOCK <n>  => dbRegLock( <n> )  ; dbCommitLog( 'M', PROCNAME() )
#command FILELOCK        => dbFileLock( 0 ) ; dbCommitLog( 'M', PROCNAME() )
#command FILELOCK <n>  => dbFileLock( <n> ) ; dbCommitLog( 'M', PROCNAME() )
#command DELETE           => dbRegLock(0) ; dbDelete() ; dbCommitLog('E', PROCNAME())
Função que salva o LOG:

Código: Selecionar todos

FUNCTION dbCommitLog( LOG_TIPO, PROCNAME )
  LOCAL ret_line := "chr(13)+chr(10)", errfile  := "backup.log"
  IF     LOG_TIPO = 'A'
         M->MINHA_INFO    := 'ABERTURA'
  ELSEIF LOG_TIPO = 'I'
         M->MINHA_INFO    := 'INCLUSAO'
  ELSEIF LOG_TIPO = 'E'
         M->MINHA_INFO    := 'EXCLUSAO'
  ELSEIF LOG_TIPO = 'M'
         M->MINHA_INFO    := 'MANUTENCAO'
  ENDIF
  M->OPERADOR:= NETNAME()
  M->MODULO  := PROCNAME
  IF !FILE(errfile)
     errhandle = FCREATE(errfile)
     FWRITE(errhandle,"Segue lista de processos detectados."+&ret_line.+&ret_line.)
     FWRITE(errhandle,"Data     Hora     Operador             Processo"+&ret_line.)
     FWRITE(errhandle,replicate("-",80)+&ret_line.+&ret_line.)
  ELSE
     errhandle = FOPEN(errfile,1)
     length    = FSEEK(errhandle,0,2)
     FSEEK(errhandle,length)
  ENDIF                                                        
  FWRITE(errhandle,DTOC(DATE())+" "+TIME()+" "+M->OPERADOR+" "+M->MODULO+" "+M->MINHA_INFO+&ret_line.)
  FCLOSE(errhandle)
  RETURN(.T.)
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
querentino
Usuário Nível 1
Usuário Nível 1
Mensagens: 25
Registrado em: 28 Jan 2009 19:53
Localização: Guarulhos - São Paulo

Travando todo sistema

Mensagem por querentino »

Olá Rochinha, obrigado pela atenção apesar do problema ser até dificil de explicar.
Quando fui linkar deu o seguinte erro.

BLINKER : 1115 : KARVAN.OBJ(KARVAN) : 'DBCOMMITLO' : UNRESOLVED EXTERNAL
BLINKER : 1115 : KARVAN.OBJ(KARVAN) : 'DBREGLOCK' : UNRESOLVED EXTERNAL
Eu linko assim:

Código: Selecionar todos

BLINKER INCREMENTAL OFF
BLINKER EXECUTABLE CLIPPER //F:200 //DYNF:8 //E:1024
BLINKER PROCEDURE DEPTH 200
BLINKER EXECUTABLE COMPRESS 1
BLINKER EXECUTABLE EXTENDED

MAP
NOBELL

File KARVAN
FILE CONPEC
FILE CADNOT
File TimeSlice
File MsgPor
File pcterror
#FILE CLD.LIB
LIB _DBFCDX
LIB DBFCDX
SEARCH BLXCLP53
OUTPUT KARVAN.EXE
Qual será o problema.
Avatar do usuário
billy1943
Usuário Nível 4
Usuário Nível 4
Mensagens: 570
Registrado em: 12 Mai 2009 17:33
Localização: Bauru-SP

Travando todo sistema

Mensagem por billy1943 »

Pelo jeito são funções (começam por DB...) e não estão definidas nos seus fontes ou nas bibliotecas utilizadas.
As vezes, você não as utilize diretamente, mas elas podem estar sendo requisitadas por alguma outra.
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
querentino
Usuário Nível 1
Usuário Nível 1
Mensagens: 25
Registrado em: 28 Jan 2009 19:53
Localização: Guarulhos - São Paulo

Travando todo sistema

Mensagem por querentino »

O mais estranho é que trava todas as cpu, e quando trava, só libera quando reinicia o servidor. E quando reinicia o servidor, as cpus que estava travada volta ao normal com (retry).

nÃo consigo entender oque acontece.
roneiluft
Usuário Nível 1
Usuário Nível 1
Mensagens: 12
Registrado em: 01 Dez 2011 21:16
Localização: Toledo/Parana

Travando todo sistema

Mensagem por roneiluft »

Boa tarde, será que algum processo não esta comprometendo 100% da CPU do servidor ai os terminais não conseguem mais buscar informações e param também?

E por isso quando reinicia o servidor a CPU volta a 0 e libera a utilização novamente.

Se for realmente isso talvez não tenha nada de errado no sistema mais sim em algum processo instalado no servidor. Tente verificar quando isso ocorre qual processo esta utilizando a grande parte da CPU do servidor.
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Travando todo sistema

Mensagem por Toledo »

querentino escreveu:Quando fui linkar deu o seguinte erro.

BLINKER : 1115 : KARVAN.OBJ(KARVAN) : 'DBCOMMITLO' : UNRESOLVED EXTERNAL
BLINKER : 1115 : KARVAN.OBJ(KARVAN) : 'DBREGLOCK' : UNRESOLVED EXTERNAL
No seu arquivo CH e PRG, troque todas as ocorrências de DBCOMMITLOG por DBCOMMITLO e DBREGLOCK por DBRLOCK.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
querentino
Usuário Nível 1
Usuário Nível 1
Mensagens: 25
Registrado em: 28 Jan 2009 19:53
Localização: Guarulhos - São Paulo

Travando todo sistema

Mensagem por querentino »

Boa tarde roneiluft, pensei que esse seria meu problema... algum processo estar comprometendo 100% da CPU do servidor, mais no servidor esta tudo normal quanto ao comprometimentodo processador.

Percebi que alguma coisa esta trava a abertura do BD, em todas as CPUs, mais o dificil de entender é que não é sempre o mesmo BD.

Quanto a compilação deu tudo certo, mas não consegui resolver o problema ainda.
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Travando todo sistema

Mensagem por rochinha »

Amiguinho,

Como postado pelo amigo Toledo, renomeie a Função dbCommitLog para dbCommitLo e nas linhas de xcommand faça o mesmo.

Não me lembro, mas acho que o Clipper somente reconhece funções com nomes de até 10 letras.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
querentino
Usuário Nível 1
Usuário Nível 1
Mensagens: 25
Registrado em: 28 Jan 2009 19:53
Localização: Guarulhos - São Paulo

Travando todo sistema

Mensagem por querentino »

Caro amigo rochinha, esse problema eu já resolvi, com a ajuda do Toledo e com a sua.

Só não consegui ainda resolver como pode travar o acesso ao BD. e só destrava quando reinicia o servidor.

Agradeço a atenção com que o pessoal desse forum tem para com os outros... impressionante.
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Travando todo sistema

Mensagem por rochinha »

Amiguinho,

Analisando os logs gerados, veja qual foi o ultimo momento e qual rotina esta ativa para que voce tenha uma idéia mais aproximada de onde possa, dentro do código estar acontecendo algum travamento.

Outra dica seria voce desligar qualquer aplicativo que possa criar cache ou parametrizá-los para que atuem de mesma forma.

Os comandos commit são preparados para fazer limpeza e liberação de áreas de armazenamento temporários.

Mas o S.O. também tem um gerenciador que pode estar configurado para atrasar a limpeza ou limpá-la imediatamente.

Como eu perguntei anteriormente, "...se o seu sistema esta no centro da rede tendo as tabelas acessadas ao mesmo tempo ou se somente os dados residiam no servidor e era acessado por cópias do sistema em cada terminal...", voce deve colocar cópias de seu executável em cada máquina e todas devem acessar o servidor.

Se uma maquina travar, as outras mesmo que o aplicativo trave, não travará a estação por inteiro.

Faça uma varredura de seus USE arquivo EXCLUSIVE ou "FLocks()" sobrando.

Modifique as ambientais do Clipper que definem a pasta TEMPorária para que aponte para outra pasta que voce designar, senão o Clipper poderá ser direcionado a usar a pasta TEMP que o próprio Windows gerencia e alguma coisa nela provoque o problema.

Verifique.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Responder