You are on page 1of 61

Totvs

Infra Services Agosto/2013

Troubleshoo*ng- Microsiga Protheus

Troubleshoo*ng - Microsiga Protheus


ndice


II) Ferramentas de Diagns*co (Desempenho)

Consumo de Memria por Thread
I) Anlise de recursos (Hardware)
LogProler
Consumo de Memria / CPU do servidor
Gerenciamento de Locks do DBAccess
Desempenho e parmetros de disco.
Trace do DBAccess
Consumo de Memria por ApplicaGon Server
Trace do Banco de Dados
Comunicao entre servidores e latncia de rede
U_NeMest
III) Analise de Logs (Erros | Informaes)

dbconsole.log
console.log
error.log
CTSTATUS.FCS

IV) Informaes Adicionais
Showstatus (License Server)
Numero de arquivos na pasta system
Tamanho dos arquivos (system/prole)
Travamentos de Licena
Cuidados com CtreePreImg

Anlise de recursos ( Hardware )

Troubleshoo*ng - Microsiga Protheus


Consumo de Memria / CPU do servidor

Instalao do Ctree Server

Troubleshoo*ng - Microsiga Protheus


Consumo de Memria / CPU do servidor

Instalao do Ctree Server

Troubleshoo*ng - Microsiga Protheus


Desempenho e parmetros de disco

Instalao do Ctree Server


- Sistema de discos rpidos para armazenar o Protheus_Data (I/O)
- Preferncia discos SAS 15k congurados em RAID-10 (mnimo de 4 discos)

- Incluir a pasta Totvs dos servidores na pasta de excluso para acesso do anGvirus.
Ex: On-Access Scan


- Desabilitar a indexao automGca do lesystem.

Troubleshoo*ng - Microsiga Protheus


Desempenho e parmetros de disco
Case:


Ctree Error 162 server gone away

Instalao
do Ctree Server

-
-
-

Baixo desempenho da sesso TS


Consumo de Disco no era expressivo.
Indexao do disco = perda de desempenho do SO e ERP.

Troubleshoo*ng - Microsiga Protheus


Desempenho e parmetros de disco

Instalao do Ctree Server

Troubleshoo*ng - Microsiga Protheus


Consumo de Memria por Applica*on Server

Instalao do Ctree Server

Troubleshoo*ng - Microsiga Protheus


Consumo de Memria por Applica*on Server

Instalao do Ctree Server

Troubleshoo*ng - Microsiga Protheus


Consumo de Memria por Applica*on Server

UGlizamos como mtrica de desempenho do applicaGon server 32bits (max 1.8Gb)

Instalao do Ctree Server

Opes:

- Habilitar parmetro para visualizar o consumo de memria por thread.
- Adicionar mais servios slave no balanceamento, considerando se o Hardware
suporta a alterao.

Comunicao e Latncia

Troubleshoo*ng - Microsiga Protheus


Comunicao externa e latncia de rede

Case:

Timeout de conexes smartclient.

Troubleshoo*ng - Microsiga Protheus


Comunicao entre servidores e latncia de rede


Case:
Ping entre o servidor do dbaccess e banco de dados

Ex: Uma variao de ms pode impactar o desempenho de roGna com consultas simples
dentro de um looping ADVPL.

Troubleshoo*ng - Microsiga Protheus


Comunicao entre servidores e latncia de rede

Case:

Ctree error: Could not ini1alize c-tree Plus 133 - Could not iden1fy server or server is not ac1ve.
Ctree Warning - Code [133] Ini1aliza1on RETRY: [1]
Ctree Warning - Code [133] Ini1aliza1on RETRY: [2]

Troubleshoo*ng - Microsiga Protheus


U_NeVest ( Timeout Sesso | Teste de latncia do link)
Ao executar o NeMest, o sistema produz arquivos de log que permitem avaliar as
caractersGvas da rede uGlizada na conexo entre o Server e o SmartClient.

Esta funcionalidade Gl quando necessrio realizar a anlise e estudo de ocorrncias
que podem estar relacionadas a comportamento de perda de performance
ou problemas de infra-estrutura de redes.


Para uGlizar o NeMest, basta seguir os passos abaixo:

Inicie o Smartclient;
No programa inicial, informe "U_NETTEST";
Informe o ambiente e a comunicao no cliente e clicar em Ok;
Clique sobre o boto Iniciar para comear o teste;
Clique sobre o boto Parar para concluir o teste.

Troubleshoo*ng - Microsiga Protheus


U_NeVest
Durante a execuo do NeMest, so criados 2 arquivos dentro do diretrio NeMest
no diretrio informado no RootPath do ambiente uGlizado. Sendo eles:

'IP_Server' +'Porta_Server' +'Hostname_Remote'+_neKest.log

Neste arquivo so apresentados os tempos de transferncia de um pacote
(com tamanho aproximado de 2048 bytes ) entre o Server e o Smartclient.

'IP_Server'+'Porta_Server'+'HostName_Remote' +_neKest_100ms.log
Neste arquivo so apresentadas as ocorrncias onde foi vericada latncia
(tempo de atraso) igual ou superior a 100ms.



Referncia: hKp://tdn.totvs.com.br/display/public/mp/Funcionalidade+NeKest

Ferramentas de Diagns*co
( Desempenho )

Troubleshoo*ng - Microsiga Protheus


Consumo de Memria por Thread

Instalao do Ctree Server

[General]
DebugThreadUsedMemory=1 (Habilitado)

Habilita coluna no TOTVS Monitor que informa a quanGdade de memria alocada por thread.

Em ambientes com balance adicionar a chave a todos os servios slave.

Necessrio start/stop do servio para aGvar/desaGvar.


hMp://tdn.totvs.com.br/display/tec/DebugThreadUsedMemory

Troubleshoo*ng - Microsiga Protheus


Consumo de Memria por Thread
[General]
DebugThreadUsedMemory=1
Instalao
do Ctree Server (Habilitado)

Troubleshoo*ng - Microsiga Protheus


Log Proler

Indicado
para
a aCnlise
e desempenho em roGnas ADVPL
Instalao
do
tree Sderver

Resultado: Avaliar a quan1dade de instrues executadas e o tempo de resposta.


Para habilitar uGlize a chave LogProler=1 na sesso Environment do applicaGon server.

No necessrio reiniciar o servio.

Direcionar conexo (exclusiva) para o servio.

Executar a roGna e sair do sistema para gerar o log.

Troubleshoo*ng - Microsiga Protheus


Log Proler

CALL dbseek(Internal) C 3237 T 23.770 M 0.078

CALL <FUNNAME> ( <RECURSO> ) C <calltot> T <Gmertot> M <slowest>


-- FROM ORIGEM LN <line> C <thiscall> T <thisGme> M <slowest>
-- FROM ORIGEM LN <line> C <thiscall> T <thisGme> M <slowest>
CALL Totalizador das chamadas FROM
<FUNNAME> - Nome da Funo
<RECURSO> - Fonte da Funo

C <thiscall> - Nmero de chamadas
T <thisGme> - Tempo da execuo em segundos de todas as calls
M <slowest> - Menor tempo de execuo,

Troubleshoo*ng - Microsiga Protheus


Log Proler

Exemplo:


CALL CRIASDB ( SIGACUSB.PRX) C 132 T 486.782 M 8.175
-- FROM DLXEXECATI (DLGXFUN.PRW) LN 6833 C 132 T 486.782 M 8.175


CALL DLXEXECATI ( DLGXFUN.PRW) C 132 T 493.403 M 8.346
-- FROM U_TESTE202 (TESTE202.PRW) LN 356 C 132 T 493.403 M 8.346

Troubleshoo*ng - Microsiga Protheus


Gerenciamento de Locks do DBAccess

Troubleshoo*ng - Microsiga Protheus


Trace do DBAccess

22
23
24
25
26
27
28
29
30
31
32
33

Troubleshoo*ng - Microsiga Protheus


Trace do DBAccess

Exemplo:

0.000 tISAMFile::GoTop
-- Load [40] record(s) to IsamCache
0.000 tISAMFile::OpenCurrentRecord
SELECT * FROM dbo.SAI010 TBL WHERE TBL.R_E_C_N_O_ = ?
0.016 tISAMFile::OpenCurrentRecord
SELECT * FROM dbo.SAI010 TBL WHERE TBL.R_E_C_N_O_ = ? -- ( R = 1 )
0.000 tDBServer::First
-- First Recno 1 on Table SAI010 [OK]
0.000 tDBServer::SetKey -- Set Order to 1 on Table SAI010
3.100 tISAMFile::GoTop
SELECT R_E_C_N_O_ FROM dbo.SAI010 WHERE D_E_L_E_T_ = ' ' ORDER BY AI_FILIAL,AI_GRUSER,R_E_C_N_O_
0.000 tISAMFile::GoTop
-- Load [40] record(s) to IsamCache
0.000 tISAMFile::OpenCurrentRecord
SELECT * FROM dbo.SAI010 TBL WHERE TBL.R_E_C_N_O_ = ?
0.016 tISAMFile::OpenCurrentRecord
SELECT * FROM dbo.SAI010 TBL WHERE TBL.R_E_C_N_O_ = ? -- ( R = 78 )
0.000 tDBServer::First
-- First Recno 78 on Table SAI010 [OK]
0.000 tDBServer::SetKey -- Set Order to 3 on Table SAI010
0.000 tDBServer::Seek
-- Begin Seek Table SAI010 Order 3 Keys

Importante idenGcar consultas com tempo de execuo elevado.



Para roGnas que uGlizam WHILE lembre que o tempo da execuo de uma consulta dento
lao X nmero de passagens resulta no tempo nal de processamento.

Analisar o plano de acesso das consultas.

Troubleshoo*ng - Microsiga Protheus


Trace do SQL Server

Troubleshoo*ng - Microsiga Protheus


Trace do SQL Server

Troubleshoo*ng - Microsiga Protheus


Trace do SQL Server

Troubleshoo*ng - Microsiga Protheus


Trace do SQL Server

Troubleshoo*ng - Microsiga Protheus


Trace do SQL Server

Troubleshoo*ng - Microsiga Protheus


Trace do SQL Server

Troubleshoo*ng - Microsiga Protheus


Trace do SQL Server

Troubleshoo*ng - Microsiga Protheus


Trace do SQL Server

Troubleshoo*ng - Microsiga Protheus


Trace do SQL Server

Troubleshoo*ng - Microsiga Protheus


Trace do SQL Server

Troubleshoo*ng - Microsiga Protheus


Trace do SQL Server

Troubleshoo*ng - Microsiga Protheus


Trace do SQL Server

Troubleshoo*ng - Microsiga Protheus


Trace do SQL Server

Troubleshoo*ng - Microsiga Protheus


Trace do SQL Server

Troubleshoo*ng - Microsiga Protheus


Trace do SQL Server
Exemplo de Consulta:

SELECT R_E_C_N_O_ FROM dbo.SE1010 WHERE D_E_L_E_T_ = '
AND (CHARINDEX(CONVERT(CHAR(3),E1_TIPO),( 'NCC/RA ' ))>0 AND E1_SALDO > 0)
ORDER BY E1_FILIAL,E1_CLIENTE,E1_LOJA,R_E_C_N_O_

Missing Index Details from SQLQuery6.sql


The Query Processor esGmates that implemenGng the following index could improve
the query cost by 89.8649%.

USE [TMPRD]
GO
CREATE NONCLUSTERED INDEX [SE1010_T01]
ON [dbo].[SE1010] ([D_E_L_E_T_],[E1_SALDO])
INCLUDE ([E1_FILIAL],[E1_TIPO],[E1_CLIENTE],[E1_LOJA],[R_E_C_N_O_])
GO

Troubleshoo*ng - Microsiga Protheus


Trace do Oracle Linha de Comando
1) IdenGcar no DBAccess o SID e Serial# da sesso

2) Habilitar trace

SQL> EXEC DBMS_SYSTEM.set_sql_trace_in_session(sid=>123, serial#=>1234,
sql_trace=>TRUE);


3) Consulta para idenGcar o path gerado, ltrar por SID:

SELECT s.SID,p.PID, p.PNAME, p.PROGRAM, p.TRACEFILE FROM V$PROCESS p, v$session s
where p.addr=s.paddr and SID = 123 order by 1;

4) Executar o tail -f para acompanhar o trace da sesso:

Ex:
tail -f /oracle/data/erpdes/admin/diag/rdbms/erpdes/erpdes1/trace/
erpdes1_ora_24380.trc

Troubleshoo*ng - Microsiga Protheus


Trace do Oracle Linha de Comando

5) Executar o tkprof para formatar o trace gerado para o arquivo de saida translated.trc.
UGlizar usurio e senha.


cd /oracle/data/erpdes/admin/diag/rdbms/erpdes/erpdes1/trace/

tkprof erpdes1_ora_24380.trc translated.trc explain=usuario/senha table=sys.plan_table
sys=no waits=yes


6) Analisar o arquivo gerado:

/oracle/data/erpdes/admin/diag/rdbms/erpdes/erpdes1/trace/translated.trc

Troubleshoo*ng - Microsiga Protheus


Trace do Oracle Linha de Comando

5) Executar o tkprof para formatar o trace gerado para o arquivo de saida translated.trc.
UGlizar usurio e senha.


cd /oracle/data/erpdes/admin/diag/rdbms/erpdes/erpdes1/trace/

tkprof erpdes1_ora_24380.trc translated.trc explain=usuario/senha table=sys.plan_table
sys=no waits=yes


6) Analisar o arquivo gerado:

/oracle/data/erpdes/admin/diag/rdbms/erpdes/erpdes1/trace/translated.trc

Troubleshoo*ng - Microsiga Protheus


Trace do Oracle Linha de Comando
Exemplo:

Trace le: P11PROD1_s001_12808.trc
Sort opGons: default

************************************************************************
********
count = number of Gmes OCI procedure was executed
cpu = cpu Gme in seconds execuGng
elapsed = elapsed Gme in seconds execuGng
disk = number of physical reads of buers from disk
query = number of buers goMen for consistent read
current = number of buers goMen in current mode (usually for update)
rows = number of rows processed by the fetch or execute call
************************************************************************
********

Troubleshoo*ng - Microsiga Protheus


Trace do Oracle Linha de Comando

SQL ID: 67vpur798hgwh Plan Hash: 2118223458

SELECT AL4_FILIAL,AL4_CODIGO,AL4_CONFIG,AL4_NIVEL,AL4_DETALH,AL4_EXPRIN,
AL4_EXPRFI,AL4_TPFAIX,AL4_VALID,TBL.D_E_L_E_T_
FROM
AL4010 TBL WHERE TBL.R_E_C_N_O_ = :1


call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------
Parse 2 0.00 0.00 0 0 0 0
Execute 12 0.00 0.00 0 0 0 0
Fetch 23 0.00 0.00 4 46 0 33
------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 37 0.00 0.01 4 46 0 33

Troubleshoo*ng - Microsiga Protheus


Trace do Oracle Linha de Comando
Rows (1st) Rows (avg) Rows (max) Row Source OperaGon
---------- ---------- ---------- ---------------------------------------------------
34 12 34 VIEW (cr=13 pr=2 pw=0 Gme=4686 us cost=3 size=884 card=34)
34 12 34 WINDOW NOSORT STOPKEY (cr=13 pr=2 pw=0 Gme=4679 us
cost=3 size=170 card=34)
34 34 34 TABLE ACCESS BY INDEX ROWID AL4010 (cr=36 pr=6 pw=0
Gme=13997 us cost=3 size=170 card=34)
43 43 43 INDEX FULL SCAN AL4010_PK (cr=18 pr=1 pw=0 Gme=9071 us
cost=1 size=0 card=43)(object id 169988)


Rows ExecuGon Plan
------- ---------------------------------------------------
0 SELECT STATEMENT MODE: ALL_ROWS
34 TABLE ACCESS MODE: ANALYZED (BY INDEX ROWID) OF 'AL4010'
(TABLE)
34 INDEX MODE: ANALYZED (UNIQUE SCAN) OF 'AL4010_PK' (INDEX
(UNIQUE))

Troubleshoo*ng - Microsiga Protheus


Trace do Oracle - Enterprise Manager

Troubleshoo*ng - Microsiga Protheus


Trace do Oracle - Enterprise Manager
Case: Consulta com baixo desempenho

Troubleshoo*ng - Microsiga Protheus


Trace do Oracle - Enterprise Manager

Troubleshoo*ng - Microsiga Protheus


Trace do Oracle - Enterprise Manager

Case: Filtro de Usurio


SELECT R_E_C_N_O_ FROM ( select /*+ FIRST_ROWS(260) */ R_E_C_N_O_, row_number() over ( ORDER BY
D3_FILIAL,D3_COD,D3_LOCAL,D3_EMISSAO,D3_SEQCALC,D3_NUMSEQ,R_E_C_N_O_ ) rn from SD3010 WHERE
(D3_COD = 'C6030 ') AND D_E_L_E_T_ = ' ' ) where rn between 1 and 260

O ndice a seguir melhora o plano de acesso da consulta em 99.49%



PRODUCAO.SD3010("D3_COD","D_E_L_E_T_") -> Incluir na pesquisa do Protheus

Analise de Logs
( Erros | Informaes )

Troubleshoo*ng - Microsiga Protheus


Anlise de Logs

Instalao do Ctree Server

DBAccess -> dbconsole.log



DBAccess uGliza as mensagens de retorno do client do banco de dados
Importante para idenGcar erro de sintaxe, chave duplicada, mensagens importantes
do banco de dados etc.

AppServer -> console.log



Importante vericar os logs dos applicaGon server com frequncia, nele podemos
encontrar mensagens de desconexo, erro na execuo de threads, alm de gerar
proler detalhado da execuo de roGnas.

Protheus -> error.log



Log de erro na execuo de roGnas (stack)

Troubleshoo*ng - Microsiga Protheus

Anlise de Logs

Instalao
o Ctree Server
CtreeServer
-> CdTSTATUS.FCS

Todas as entradas de log do CtreeServer.


Exemplo de Desconexo de Slaves:


Thu May 02 08:46:30 2013
- User# 00042 ctnGo: read error - O42 bytes=0 pErr=128
|ADMIN||: 161
Thu May 02 08:46:38 2013
- User# 00076 ctnGo: read error - O76 bytes=0 pErr=128
|ADMIN||: 161
Thu May 02 08:46:38 2013
- User# 00069 ctnGo: read error - O69 bytes=0 pErr=128

Informaes Adicionais

Congurao - Microsiga Protheus


Showstatus (License Server)
[Drivers]
AcGve=TCP

[TCP]
TYPE=TCPIP
Port=11000

[General]
InstallPath=E:\totvs\microsiga\protheus11

[LICENSESERVER]
enable=1
port=5555
ShowStatus=1 => (habilita log detalhado do consumo de licenas e quando habilitado
afeta o desempenho)
enablenumber=1

[LICENSECLIENT]
server=10.0.5.16
port=5555

[SERVICE]
NAME=P11LIC
DISPLAYNAME=Protheus 11 License

Congurao - Microsiga Protheus


Showstatus (License Server)
[Drivers]
AcGve=TCP

[TCP]
TYPE=TCPIP
Port=11000

[General]
InstallPath=E:\totvs\microsiga\protheus11

[LICENSESERVER]
enable=1
port=5555
ShowStatus=0 => (deixar parametro desabilitado)
Enablenumber=1

[LICENSECLIENT]
server=10.0.5.16
port=5555

[SERVICE]
NAME=P11LIC
DISPLAYNAME=Protheus 11 License

Troubleshoo*ng - Microsiga Protheus


Nmero de arquivos na pasta system | Tamanho dos Arquivos
Por desempenho do lesystem manter o nmero de arquivos na pasta system inferior a 10k.
Instalao do Ctree Server
Protheus possui limpeza automGca de arquivos temporrios na primeira conexo (CLEANCTREE).

Importante apagar os temporrios no fonte para no prejudicar o desempenho da aplicao.



CtreeServer Gerenciamnto de arquivos at 4Gb. (Ateno: SXP, prole etc).


Exemplo de script de limpeza:

del *.txt
del *.mem
del sc*.log
del sc*.dtc
del sc*.cdx

Troubleshoo*ng - Microsiga Protheus


Travamentos de Licena

Instalao do Ctree Server



- Envio de documentos para impressoras que no existem na rede.
- Envio de documentos para impressoras PDF no servidor que
apresentam tela para interao do usurio.
- CTRL + ALT + DEL
- Erro na integrao com Oce.
- Importante uGlizar binrio atualizado no License.

Troubleshoo*ng - Microsiga Protheus


Cuidados com CtreePreImg


- Pode dso er
necessrio
Instalao
Ctree
Server desabilitar o CtreePreImg para reindexar o
ambiente devido a diferena no Header dos arquivos (arquivos TRAN
vs PREIMG).
- Em conjunto, deve ser alterado o arquivo de congurao do c-tree
Server (ctsrvr.cfg), eliminando ou comentando as chaves
COMPATIBILITY FORCE_WRITETHRU e
COMPATIBILITY WTHRU_UPDFLG
- Erro que pode ocorrer com as chaves habilitadas:
- Error - Insert - File: <FILENAME_CT> - Error: 123 - Variable-length
data record is not preceded by a valid record mark. The le has
apparently been corrupted.
Mais informaes: hMp://tdn.totvs.com/display/tec/Melhoria+-+Ganho
+de+performance+uGlizando+c-tree+Server

Congurao - Microsiga Protheus



Questes

Ricardo Cas*llo Pereira
CSDS - Totvs Infra Services
ricardo.cas*llo@totvs.com.br

61

You might also like