2021年1月18日星期一

Java Identifying Source of Latency

I am working on a java process which is conceptually rather simple. It is a single thread constantly fetching data from various sources and making decisions based on these. I have recently noticed a suspicious delay between 2 log lines, where I would not expect much processing to happen between the 2. (Tens of milis delay vs expectation of a 1 to a few milis)

Since this suspicious delay is not always there, my first thought was that I did a poor job at minimizing the need for garbage collection, causing the JVM to pause execution at unwanted times.

While I still believe I did a poor job with that, it doesn't seem to be the cause. I have added the following JVM parameters: -Xlog:gc*=info,safepoint::timemillis,level,tags and I see no pause between my suspicious log lines. Could there be other JVM pauses that these JVM params would not reveal?

Anyways, would java pros have any recommendations to try and efficiently track down the source of this latency? Any (preferably free) tools I could use to monitor and understand what's happening?

Environment info: Linux 3.10, java 11. The process in question is running on an isolated core, other than that I have not done much tuning.

https://stackoverflow.com/questions/65784590/java-identifying-source-of-latency January 19, 2021 at 10:07AM

没有评论:

发表评论