Почему время запроса в журнале Google App Engine отличается от времени в Appstats?
Я запускаю Appstats в своем приложении HDR на основе Java в Google App Engine. Прямо сейчас я несколько озадачен разницей во временном значении между фактическим журналом запросов App Engine и журналами Appstats. Похоже, что между этими временами есть существенный сдвиг. Чтобы объяснить, что я имею в виду, я привел несколько скриншотов. Оба они из одного запроса.
Это из журнала запросов App Engine:
И это для того же запроса от Appstats:
Вот список измерений, которые мне удалось извлечь:
Log Timestamp 10:10:33.156
Log "Total" 147ms
Log "ms" 147ms
Log "cpu_ms" 86ms
Appstats Timestamp 10:10:33.072
Appstats "Grand Total" 39ms
Appstats "real" 39ms
Appstats "RPC Total" 20ms
Appstats "api" 0ms
Appstats "overhead" 0ms
Как вы можете видеть, есть разница как в отметке времени запроса, так и во время выполнения:
Difference Log/AS Timestamps 84ms
Difference Log/AS Total 108ms (377%)
Кстати: хотя временные метки запроса не совпадают, это все тот же запрос: я перешел по ссылке Appstats, опубликованной в журнале запросов, и провел этот тест в другом неиспользуемом тестовом приложении, чтобы убедиться, что ссылка правильная.,
Почему Appstats сообщает, что мой запрос занял 39 мс, а журнал запросов GAE сообщает, что запрос занимал 3,8 раза (147 мс)? Почему один и тот же запрос имеет две разные временные метки?
Большое спасибо!
1 ответ
appstats подключается к вашему коду, пройдет некоторое время, прежде чем ваш код (appstats) будет вызван, а также после выхода appstats. Помните, appengine не передает поток на клиент, но все выходные данные передаются в какой-то буфер, а затем передаются в инфраструктуру appengine для доставки.
Сроки запроса будут примерно такими
- начало запроса (время начала вы видите в логах)
- начало приложения покрыто кодом
- конец кода приложений
- окончательный ответ отправлен (общая продолжительность)
Было бы интересно посмотреть, сколько будет 1 и 4 в среднем, и это может зависеть от времени выполнения.
Да, и у самого appstats будут некоторые издержки, которые не будут измеряться appstats, включая запуск и очистку в конце, которые влияют на время в 1 и 2.