У меня есть приложение Springboot, которое плохо работает под нагрузкой, и это нормально. Теперь я хочу найти узкое место, чтобы улучшить это приложение. Мы используем Micrometer / Prometheus для сбора метрик.
Я очень смущен, потому что получение метрик от самой конечной точки:
irate(http_server_requests_seconds_sum[1m]) / irate(http_server_requests_seconds_count[1m])
будет получать приемлемые значения (в Grafana): около 800 мс в худший случай.
Но проверка метрики кота c:
rate(tomcat_servlet_request_max_seconds[1m]) / rate(tomcat_servlet_request_max_seconds[1m])
дает совершенно другой результат: до 7 секунд.
Возможно, что tomcat_servlet_request_max_seconds
metri c учитывает время, когда Tomcat поставил в очередь запросы (принял, но ожидал время обработки), в то время как http_server_requests_seconds_sum
учитывает только время обработки? Если да, как это улучшить?
PS: system_load_average_1m
также взлетает до 16, что намного больше, чем число доступных процессоров