Unsere Anwendung hat ~ 10 Threads, die getrennte Aufgaben erledigen (keine Thread-Pools). Wir erleben keinen Deadlock, versuchen aber immer, die Latenzzeit zu reduzieren, um auf eine Anfrage zu antworten, so dass wir daran interessiert sind, zu ermitteln, welche Locks am meisten umstritten sind. jconsole zeigt, wie oft Threads blockiert werden, und es ist nicht sehr oft, aber wir wollen immer noch wissen, welche Locks am meisten streiten.Ermittlung der am stärksten beanspruchten Sperren?
Wir verwenden die Sun JVM, daher ist JLA von IBM nicht nützlich und wir laufen nicht unter Solaris, so dass wir dTrace nicht verwenden können.
EDIT: Ich möchte diese Beobachtung in der Produktion machen, wo ein Profiler die App inakzeptabel verlangsamen würde. Dies ist ein Handelssystem, wenn wir langsam sind, verlieren wir Geld, also führen wir keine Profiler in der Produktion aus. Es ist auch ziemlich schwierig, den vielen Austausch zu simulieren, mit dem wir in einem Leistungstest sprechen.
dTrace ist das einzige System, von dem ich persönlich weiß, dass es ohne Profiling-Tools funktioniert. – aperkins
Wenn ich darüber nachdenke, empfinde ich die Instrumentierung als den besten Ansatz. Sie können entweder einzelne Sperranforderungen protokollieren oder globale Zähler behalten. –