У меня обратный прокси nginx. Сервер почти обслуживает 600-700 запросов в секунду. У меня есть плагин времени загрузки Munin HTTP, который выводит это:
Теперь проблема в том, что я вижу некоторые всплески на графике. Ожидаемое время отклика всегда должно быть менее 200 мс. Я слежу за системным журналом и сообщениями, но не могу понять истинную причину этого. Мне было интересно, есть ли какая-нибудь хорошая система профилирования времени ответа HTTP, которую я могу установить / встроить с этим сервером nginx и получить подробные отчеты / журналы о разбиении времени, затрачиваемого на разные вещи, и о том, что именно является причиной всплесков.
Система профилирования также поможет мне понять узкие места и способы дальнейшей оптимизации задержки.
Сейчас самое важное - исследовать причину скачков на графиках времени загрузки HTTP (о подобной схеме сообщают внешние мониторы - Pingdom) и исправить ее, чтобы получить согласованное время отклика.
Спасибо
Вот Это Да! Как вы измеряете время загрузки? Насколько я знал, nginx будет сообщать только время ответа на запрос ($ request_time), что совсем другое.
Несколько месяцев я плохо смотрел, но в прошлый раз, когда я проверял, было очень мало возможностей для анализа времени отклика. PastMon выглядит многообещающе. Есть и коммерческие инструменты вроде Client Vantage (довольно дорогие).
Я закончил тем, что написал свой собственный - на самом деле не так уж сложно создать простой скрипт awk, чтобы сообщать обо всех попаданиях, превышающих пороговое значение, - но помните, что вам нужно вернуться и проверить, как URL-адрес ведет себя остальной частью время. например
# looking for URLs matching 'example.com/interesting'
# with URL in $6 and $request_time in $8
BEGIN {}
$6==/example.com\/interesting/ {
if ( $8>0.3) {
n[$6]+=1; # no of hits by URL
t[$6]+=$8; # sum of times by url
s[$6]+=$8 * $8; # sum of sq of times by url
if (m[$6]<$8) m[$6]=$8; # max time for url
}
}
END {
print "url, n, avg, stddev, max";
for (x in n) {
print x ", " n[x] ", " t[x]/n[x] ", " sqrt(s[x]-t[x]*t[x])/(n[x]-1) ", " m[x];
}
}
Если вы измеряете время отклика на прокси-сервере, вы также измеряете время, необходимое для доставки запроса по сети, то есть ваше приложение может вести себя стабильно, но скачки возникают из-за изменений в Интернете / клиенте. Если вы хотите увидеть, что действительно делает ваше приложение, вам нужно посмотреть журналы вашего веб-сервера.