2010-08-26 5 views
41

Sto cercando un profiler Java per l'utilizzo in un ambiente di produzione molto forte domanda, sia commerciale o libero, che soddisfa tutti i seguenti requisiti:Il miglior e più sicuro Java Profiler per l'uso di produzione?

  • integrazione leggera con il codice (senza ricompilazione con opzioni speciali, nessun hook di codice, ecc.). Eliminare alcuni .jars specifici del profiler insieme al codice dell'applicazione è ok.
  • Dovrebbe essere possibile connettersi/disconnettersi alla JVM senza riavviare l'applicazione.
  • Quando il profilo non è attivo, nessun impatto sulle prestazioni
  • Quando il profilo è attivo, l'impatto trascurabile sulle prestazioni. Una leggera degradazione è accettabile.
  • deve fare tutto il roba 'previsto' un profiler fa - il tempo trascorso in ogni metodo per trovare gli hotspot, allocazione degli oggetti/memoria di profiling, ecc

In sostanza ho bisogno di qualcosa che può sedersi in sospeso nella produzione in cui tutto va bene senza che nessuno sappia o si preoccupi che sia lì, ma che poi sia in grado di connettersi alle sue seccature (e al degrado delle prestazioni) libero di individuare i problemi difficili da trovare come hotspot e problemi di sincronizzazione.

risposta

17

Hai provato YourKit? Ha quasi tutte le funzioni che stai cercando.

+0

Abbiamo provato Yourkit qualche tempo fa, alla versione 7.x, e ho trovato che rallentava la JVM di un ordine di grandezza al momento della creazione del profilo. La loro versione più recente utilizza una migliore integrazione con Java 1.6+ ed elimina questo problema? – Peter

+0

Resta ancora la JVM, ma da allora è migliorata molto. – Behrang

+0

Ho letto il set di funzionalità corrente - se non è fuorviante, questo è esattamente ciò che sto cercando. – Peter

1

Utilizzo Eclipse TPTP - Test Eclipse & Progetto piattaforma strumenti di prestazioni. Indipendentemente dal fatto che sia adatto o meno all'uso di produzione, dipende dall'utilizzatore. Per me, va bene e soddisfa le tue esigenze.

http://www.eclipse.org/tptp/

9

Sono stato contento di jProfiler.

+0

anch'io. Quando si utilizza il metodo di profilazione del campionamento, il sovraccarico è molto basso. – MRalwasser

+0

jProfiler è molto buono, ma a € 2449 per una licenza flottante singola e un anno di supporto è troppo caro a mio parere. Ne comprerei uno per la mia squadra se non fosse così esorbitante. –

+0

jProfiler è di gran lunga migliore di altri, a mio parere ... – ngc4151

2
+0

I thread di Wily hanno esaurito il controllo consumando 2 GB di heap al secondo presso un cliente molto importante, causando problemi di prestazioni critici e guasti. In altri siti abbiamo utilizzato AppDynamics che ha funzionato bene. –

1

Un'altra opzione è http://www.newrelic.com/. Lo stiamo usando in produzione da un po 'di tempo, e sembra essere abbastanza affidabile e performante. Semplice da configurare (una .jar e un'opzione di riga di comando -agent).

14

Java VisualVM è uno strumento che fornisce un'interfaccia visiva per la visualizzazione di informazioni dettagliate sulle applicazioni basate su tecnologia Java (applicazioni Java) mentre sono in esecuzione su una Java Virtual Machine (JVM). Java VisualVM organizza i dati JVM recuperati dagli strumenti JDK (Java Development Kit) e presenta le informazioni in un modo che consente di visualizzare rapidamente i dati su più applicazioni Java. È possibile visualizzare i dati su applicazioni e applicazioni locali in esecuzione su host remoti. È inoltre possibile acquisire dati sul software JVM e salvare i dati nel sistema locale e visualizzare i dati in un secondo momento o condividere i dati con altri. Questo è dotato di Oracle JDK è di per sé ...

$ jvisualvm 
1

C'è un'altra nuova opzione chiamata javosize

Quando ho guardato per "miglior profiler Java" su google, ho visto sul primo link non a pagamento (è un blog), lo stesso strumento sui commenti al post:

https://blog.oio.de/2014/03/07/java-profilers-a-short-comparison-between-jprofiler-yourkit-and-javas-visualvm/

Speranza che aiuta!

Modifica: come dicono i commenti, il collegamento linkedin è un forum privato. Ci scusiamo per questo. Ecco il link al sito principale:

http://www.javosize.com/gettingStarted.html

+0

che link collegato è solo un collegamento a un gruppo, non a un post specifico. È rotto ? – bvdb

+0

Sebbene questo collegamento possa rispondere alla domanda, è meglio includere qui le parti essenziali della risposta e fornire il link per riferimento. Le risposte di solo collegamento possono diventare non valide se la pagina collegata cambia. – Wouter

+0

Entrambi avete ragione, mi dispiace per gli inconvenienti. Aggiunto un altro link alla pagina principale. Ancora una volta mi dispiace. –

4

preferisco Java Flight Recorder. Non causa quasi nessun sovraccarico di prestazioni e ha una buona interfaccia grafica. Aggiungere JVM parametri

-XX:+UnlockCommercialFeatures -XX:+FlightRecorder 

-XX:StartFlightRecording=name=test,filename=test.jfr,dumponexit=true

e aprire il record con JMC.

+0

Penso che il registratore di volo sia sul lato java di enterprize, giusto? Devi pagare per usarlo in produzione. –

1

FusionReactor Java Application Performance Monitor, include anche un Java Profiler overhead molto basso come parte del suo portafoglio di funzionalità. http://www.fusion-reactor.com/production-java-profiler/ FusionReactor può essere installato in un paio di minuti & hanno una prova gratuita di 14 giorni per provarlo.

1

Dai uno sguardo allo Java Mission Control insieme a Flight Recorder. A partire dal rilascio di Oracle JDK 7 Update 40 (7u40), Java Mission Control è fornito in bundle con HotSpot JVM, quindi è altamente integrato e si propone di avere piccoli effetti sulle prestazioni di runtime. Ha funzionalità di call tree come Callgrind.