Почему у моего сервлета большая задержка, когда у моего кода низкая задержка? - PullRequest
1 голос
/ 10 апреля 2020

У меня есть приложение 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, что намного больше, чем число доступных процессоров

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...