4 ms·
I've had good results using DynaTrace for profiling .NET code. They have a Java version that I would try if I needed such a thing: http://www.dynatrace.com/en/t
by TYPE_FASTER 11y ago
I've had good results using DynaTrace for profiling .NET code. They have a Java version that I would try if I needed such a thing: http://www.dynatrace.com/en/technology/java.html http://www.dynatrace.com/en/technology/java.html
What is really helpful is that you can run DynaTrace in production without impacting performance. DynaTrace agents run on the production web/app servers and send data to DynaTrace collectors.
This makes resolving production issues way easier. You sort by CPU time in descending order and work down the list. You already have the stack trace and data associated with the request or SQL query.
- conorgdaly 11y agoCould you give rough idea of cost - dev license/prod license? Their own site is 'Contact Us', & Google is not turning up anything of use either.
- bpchaps 11y agoIt's expensive. I think when my last company bought it, it was 15k per license or something astronomical like that. They bought 20 or so licenses and never actually used them in prod - mostly because of the effort in building up a sane config for ops to use. The guy who set it up did a pretty good job, but after coming up to him and mentioning the 2hr/day stop the world GCing going on, dynatrace wasn't able to see them, where the jvm logs could. So yeah - it's a good product, but you better hope you have the money for it and the patience to build a good config.
- windowsworkstoo 11y agoSure but the issue with Dynatrace and similar ilk (NewRelic also) is they still attach a profiler and do have some impact. Now, I wouldn't typically care, but you can get at lest 95% of the same information, including yes, stack traces, with ETW for basically free - in cost and in perf impact on Windows at least. Throw the results in a flame graph and boom, done. Windows in particular has so much great inbuilt stuff for troubleshooting perf but its hard to find and not well marketed, so these other folks make a killing selling an inferior product.
- ygra 11y agoETW is awesome! Been using PerfView for pudding for a while now. Is there a way of using ETW for Java code?
- windowsworkstoo 11y agoI don't know - can you interop with Win32 from Java on Windows? If so, possibly. I doubt Java itself would have an ETW provider for various runtime events (GC's, contentions etc).
- ygra 11y agoWell, usually via JNI/JNA. Not as pretty as P/Invoke. I guess the lack of PDBs might be an issue for resolving stack traces, even if you don't get GC events.
- grabnerandi 11y agoETW is definitely great to get started and I am sure you find a lot of hotspots with it. The benefit of APM tools such as Dynatrace (keep in mind that I am also working for them) is that they automatically tag & trace requests across thread and runtime boundaries. So - besides stack traces of individual CLRs you get a full end-to-end (browser to database) view including capturing method arguments and return values where it makes sense, e.g: SQL Query, Bind values, Web Service URLs + parameters, ... - as we hook into the profiling APIs we get some good information about GC and the impact GC has on your execution times, ... Good news is that all APM vendors provide free trial versions. So - give it try if you want to see if it gives you more than ETW!
- grabnerandi 11y agoAnd if you want to give Dynatrace a try - here is the link: http://bit.ly/dtpersonal http://bit.ly/dtpersonal. I also have a free YouTube channel with tutorials that explain how the whole thing works: http://bit.ly/dtpersonal http://bit.ly/dtpersonal (end of commercial) :-)