1. A computer-implemented method comprising: obtaining a series of thread dump samples by generating a separate thread dump during each particular time interval in a series of time interval; based on the series of thread dump samples, automatically generating a set of stack segment classifications; for each particular thread represented in the series of thread dump samples, automatically selecting, from the set of stack segment classifications, a particular stack segment classification for the particular thread based at least in part on a number of invocations of a code block in the particular stack segment multiple by an execution time of the code block; determining a trend for each stack segment classification in the set of stack segment classifications, thereby generating a set of trends; determining a set of anomalies based at least in part on the set of trends; and generating output based at least in part on the set of anomalies; wherein said set of anomalies includes at least one of: a level spike, a level shift, a level drift, a variance change, a saturation, a stuck thread, a lingering thread, a deadlock condition, a congestion upstream, a congestion downstream, a congestion in resource pool, a convoy effect, an impedance mismatch, an outlying measurement, or a burst of outlying measurements.