Каковы точные значения значений времени в полях журнала GAE? - PullRequest
2 голосов
/ 10 мая 2011

Я вижу некоторые загадочные временные поля в стандартных журналах движка приложений Google, которые меня интересуют:

2011-05-09 21:56:00.577 /whatever 200 211ms 775cpu_ms 589api_cpu_ms 
0.1.0.1 - - [09/May/2011:21:56:00 -0700] "GET /whatever HTTP/1.1"
200 34 - "AppEngine-Google; (+http://code.google.com/appengine)"
"****.appspot.com" ms=212 cpu_ms=776 api_cpu_ms=589 cpm_usd=0.021713
queue_name=__cron task_name=dc4d411120bc75ea8bbea773d23eaecc

В частности: мс , cpu_ms , api_cpu_ms , каждый из которых два раза с немного разными значениями.

Кроме того, когда я сам регистрирую информацию о времени с простой структурой, приведенной ниже для запроса GET, он печатает несколько меньшее значение. В данном случае, в частности 182 мсек, против официального 775 .

protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
  long t0 = System.currentTimeMillis();
  //Do the stuff
  long t1 = System.currentTimeMillis();
  log.info("Completed in " + (t1-t0) + " msecs.\n");
}

Итак, мои вопросы: почему разница между моим измеренным результатом времени и значением cpu_ms и как я могу его уменьшить? Каковы точные значения значений времени в полях журнала GAE?

Я хочу оптимизировать свой код, и я понял, основываясь на вышеупомянутых фактах, что большая часть времени (почти 600 мсек!) Не тратится непосредственно во время запроса doGet . (Я использую JPA, URLFetch, и это задача cron.)

1 Ответ

4 голосов
/ 10 мая 2011

211мс : это время ответа, которое будет восприниматься пользователем, который запросил страницу.Вы попытаетесь уменьшить его, чтобы повысить скорость вашего сайта.

775cpu_ms : в соответствии с документацией App Engine , "время процессорасообщается в «секундах», что эквивалентно количеству циклов ЦП, которое может выполнить процессор Intel x86 с частотой 1,2 ГГц за это время. Фактическое количество затраченных циклов ЦП сильно варьируется в зависимости от условий, встроенных в App Engine,таким образом, это число корректируется для целей отчетности с использованием этого процессора в качестве эталонного измерения."

Тогда, как правило, не существует" реального "времени: оно должно отличаться от того, которое вы измерили с помощью System.currentTimeMillis() потому что это настроено.Вместо этого вы должны использовать Quota API для мониторинга использования процессора: см. Документацию здесь .Процессорное время оплачивается (свободная квота составляет 6,5 процессорных часов в день, и вы можете заплатить за большее количество процессорного времени).Затем вы попытаетесь уменьшить его, чтобы платить меньше.

589api_cpu_ms : это время ЦП, затраченное на использование API (хранилище данных, пользовательский API и т. Д.)

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