Fai la cosa giusta da subito: Troubleshooting Server Side JVM
Relatore Ing. Giuseppe Galli Partner in K-Tech, CTO Esperto in APM da 4 anni Lavora su soluzioni Java nel dominio enterprise dal 1998 In K-Tech da 7 anni g.galli@k-tech.it
L'azienda: K-Tech s.r.l. Dove il nostro Know How ci ha portato Siamo una società romana che opera a 360 sulla tecnologia Java in ambito Enterprise. Competenze in: Application Performance Management Software Performance Engineering Project Management System Administration OOAD Formazione Oracle IBM CA Wily -.. Open Source Servizi in EMEA: MCS, CRC, Business Continuity 24X7 on site < 24h from call Certificati ISO 9001 in Progettazione ed erogazione di corsi di formazione
K-Tech Educational Nel nostro Catalogo Formazione abbiamo corsi su: Performance Analisi Architettura Programmazione Amministrazione JBoss Application Server Riconsegnaci il feedback! E potrai vincere uno dei tre corsi su Java Virtual Machine Troubleshooting Sviluppo Enterprise
Troubleshooting Il Metodo: APM: Vantaggi Requisiti Gestione delle performance applicative ITIL: Incident management (IcM) in ITSM
Gestione delle Performance Applicative Performance applicative = Performance ditta Ruolo IT : i dati WWW i processi
Gestione delle Performance Applicative Aumentare Competitività Time 2 market Costi IT Diminuire Tempi per riparare Affidabilità Brand Errori e fermi Stress
Metodo Individua e verifica Caratterizza e priorizza (triage) Isola e scopre l'origine Documentare Invia allo specialista
Fase 1: Individua e verifica Individuazione automatica o manuale Monitoraggio attivo o passivo Verifica e convalida il problema ed evita i falsi allarmi
Fase 2: Triage Caratterizzare il problema attraverso i sintomi Triage assegna le priorità ai diversi incident
Fase 3: Isola e scopre l'origine Lo SME separa gli effetti dalle cause originarie Individuare il componente problematico Tipicamente: carico, configurazione, codice, back-end
Fase 4: Documentazione La documentazione dovrebbe presentare: Quando il problema si è presentato L'impatto sul servizio I dati rilevati nella verifica e nell'analisi La causa principale ed il perché è accaduto Fare confronto con valori dello stato normale Mostrare oltre ai dati il comportamento dei componenti
Documentazione Sul mio laptop funziona L'applicazione è stata testata E' colpa della rete Il cluster va bene Il DB risponde veloce
Monitoraggio Architettura Monitoraggio attivo/passivo
Misure nella JVM Metriche Tempi Uso delle risorse HW Concorrenza Crash Errori Strumenti di misura Probe: java.lang.instrument JMX: java.lang.management
Rilevazione Automatica o manuale Soglie di allarme e di pericolo Monitoraggio passivo real-time Log
Triage Priorità e caratterizzazione Assegnazione della priorità Analisi delle metriche Tecnica esclusione
Triage problemi JVM Caratterizzazione problemi tipici della JVM: Progressivi: occupazione memoria, blocco thread Costanti: errori o timeout che si ripetono Improvvisi: blocco thread, picchi di utilizzo della CPU Periodici: rallentamenti, crash
Documentazione Dati monitoraggio Log con stack trace Core dumps Thread dump Vendor site
Caso pratico 1 Livelock, macchina biprocessore con utilizzo costante 50% CPU (1 CPU al 100%) Misura: valore (50%) e tendenza (fisso da ore) Triage: urgente, improvviso e poi costante Isolamento: due thread in live-lock Documentazione: thread dump successivi, bug parade su sito del vendor
Caso pratico 2 Memory leak Misura: dimensione memoria permanent crescente, OOM Triage: progressivo e poi restart JVM Isolamento: PermGen, -XNoClassGC Documentazione: tempi, mem dump, opzioni start jvm
Conclusioni Gestire correttamente le performance è un aspetto vitale per ogni progetto Il metodo è necessario oltre gli strumenti Necessita del monitoraggio Assicura i risultati nel minor tempo possibile
Riferimenti http://www.k-tech.it http://www.javaportal.it http://java.sun.com/javase/reference/index.jsp http://www.perfeng.com/
Ringraziamenti Un ringraziamento a tutto il personale K-Tech: /.*/@k-tech.it e all'organizzazione del Javaday Roma
Q/A
Estrazione Estrazione dei 3 corsi su Java Virtual Machine Troubleshootig!