Ошибки — не вся жалоба: корзина ещё и грузится по несколько секунд. Время ответа тоже превращают в SLI.
Первое, что приходит в голову, — среднее время ответа. Оно плохо описывает то, что чувствуют покупатели. Несколько ответов по 60 секунд (504: nginx не дождался backend'а) тянут среднее вверх, а сотни ответов по две секунды теряются среди тысяч быстрых. Среднее за последний час — меньше половины секунды, и оно не говорит, что каждый двадцатый покупатель ждал около двух секунд и дольше.
Поэтому задержку описывают перцентилем. p95 (95-й перцентиль) — время, за которое ответили 95 % запросов; оставшиеся 5 % ждали дольше. Считают его так: времена ответов сортируют по возрастанию и берут строку с номером «95 % от их числа, с округлением вверх». Из 3600 запросов это строка 3420. Так выглядит p95 всего журнала:
(95 * n + 99) / 100 — те же 95 % с округлением вверх в целых числах: арифметика оболочки дробей не знает. sort с ключом -n сравнивает строки как числа: без него 10.5 встанет раньше 2.1.
Найди p95 за час
Найди p95 времени ответа за последний час и запиши его одним числом в секундах в ~/sli/p95.txt.
Цели · 0 из 1
- Записать в ~/sli/p95.txt p95 времени ответа за последний час ещё не выполнена
В последний час прилетит ещё один ответ — за 120 секунд. Что станет с p95 и средним временем ответа за час?
-
Наоборот: p95 смотрит на место строки в отсортированном списке, а среднее — на сумму, куда 120 секунд войдут целиком.
-
p95 зависит от места строки в отсортированном списке: самый долгий ответ уйдёт в его конец, а строка номер «95 % от n» почти не сдвинется.
-
Среднее складывает все времена: 120 секунд, деленные на ~3600 запросов, прибавят к нему ~0,03 с.
Среднее складывает все времена, и 120 секунд заметно его сдвинут, а p95 — время строки «95 % от n» в отсортированном списке, и один долгий ответ в конце списка её почти не сдвинет.