Почему задержка движка приложения такая большая?

Почему загрузка статического файла из GAE занимает так много времени? То же самое и с ответами от моего приложения, у них огромная задержка, но для исключения задержек в моем коде я публикую здесь времена доступа к статике.

Время загрузки http://t***p.appspot.com/favicon.ico

Задержка загрузки статического файла

Пинг от меня до фронта GAE есть

пинг t***p.appspot.com

PING appspot.l.google.com (173.194.71.141) 56(84) bytes of data.
64 bytes from lb-in-f141.1e100.net (173.194.71.141): icmp_seq=1 ttl=48 time=28.1 ms
64 bytes from lb-in-f141.1e100.net (173.194.71.141): icmp_seq=2 ttl=48 time=28.0 ms

person Alexander Ponomarev    schedule 03.05.2014    source источник
comment
Понятия не имею, количество времени сильно варьируется, и я вижу типичную разницу в 30-80 мс по сравнению с моим временем пинга. Используете ли вы статический обработчик, и это статический обработчик файла или статического каталога?   -  person Tim Hoffman    schedule 03.05.2014
comment
@TimHoffman, я использую static_files: static/favicon.ico   -  person Alexander Ponomarev    schedule 03.05.2014
comment
Обратите внимание, что статические обработчики не будут запускать новый экземпляр, так что здесь проблема не в этом. Я бы сравнил задержки для static_dir и static_files на случай, если там есть какая-то разница. Сказав это, на неактивных сайтах статические обработчики все еще могут занимать до 300 мс — у меня есть пример сайта, который показывает это. Принимая во внимание, что активный сайт, кажется, занимает всего 40 мс, и это, вероятно, связано с собственным кэшированием Google для статических обработчиков и пограничных кешей.   -  person Tim Hoffman    schedule 06.05.2014


Ответы (1)


AppEngine основан на экземплярах.

Как работают экземпляры AE?

  1. Когда HTTP-запрос получен, AE запускает новый экземпляр (если экземпляр недоступен), например, требуется время, чтобы подготовиться к получению запроса.
  2. Когда экземпляр выполняет работу с запросом, он остается в полувыключенном состоянии в течение 30 минут (по умолчанию).
  3. При получении другого запроса полувыключенный экземпляр будет готов гораздо быстрее, чем тот, который полностью выключен.

Если запрос (какой тайминг вы указали) был первым за какое-то время, AE приходилось загружать новый инстанс.

Редактировать: я нашел вопрос, похожий на ваш: Почему задержка моего приложения GAE, обслуживающего статические файлы, такая высокая?

Одна из идей, представленных Кайлом Финли, заключается в том, чтобы обслуживать файлы с помощью вашего скрипта, а
не задавать их как статические ( как сообщает Финли, результаты иногда лучше, но скорость менее постоянна). Другая идея состоит в том, чтобы включить/увеличить кеширование статических файлов. Конфигурация приложения GAE

person Jakub Mendyk    schedule 04.05.2014
comment
Это был не первый - person Alexander Ponomarev; 04.05.2014
comment
Этот ответ не относится к статическим обработчикам, выполняющим только код. Запросы статических файлов не запускают экземпляр appengine. Я могу доказать, что это необходимо. статические обработчики обслуживаются с использованием другой инфраструктуры. - person Tim Hoffman; 06.05.2014
comment
@ Тим, я это знаю, я исправлю свой ответ, чтобы он не вводил в заблуждение. - person Jakub Mendyk; 06.05.2014