2013-03-04 5 views
7

Я разработал приложение для клиента, использующее платформу 1.x и запускаемое на GAE. Приложение отлично работает, но иногда безумно медленное. Загрузка простой страницы занимает около 30 секунд, но иногда она работает быстрее - никаких изменений кода вообще не происходит.Определите, почему движок приложения Google работает медленно

Есть ли способ определить, почему он работает медленно? Я пытался связаться с нами, но я не мог найти номер телефона или электронную почту. Также нет ответа на официальную группу google.

Как вы подходите к этой проблеме? В настоящее время мой клиент очень зол из-за медленного времени загрузки, но переход на другой провайдер - последний вариант на данный момент.

+0

Вы используете master/slave или высокую репликацию для своего хранилища данных? –

+0

Здравствуйте, я использую High Replication – FrEaKmAn

+0

интересно - вы контролируете загрузку сайта/GC/время вашего кода - если да, то как? –

ответ

0

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

+1

Платное приложение. Я понимаю медленный запуск, это нормально. Я говорю о том, когда приложение уже запущено. – FrEaKmAn

+0

, так что вы имеете в виду второй запрос после того, как экземпляр загружен и загружен? Сколько экземпляров в данный момент? только один, или есть еще? а также проверить, сколько экземпляров у вас минут на холостом ходу. –

+0

Я установил все в автоматическом режиме и позволяю Google решать, что лучше. Несколько раз я проверял и запускал 4 экземпляра. – FrEaKmAn

8

Используйте GAE Appstats, чтобы просмотреть свои удаленные вызовы процедур. Все RPC медленны (Google Cloud Storage, Google Cloud SQL, ...), поэтому, если вы можете уменьшить количество RPC или использовать некоторые кэширующие структуры данных, используйте их -> ваше приложение будет намного быстрее. Но вы можете видеть с помощью appstats, части которых медленны, и если им нужно внимание :).

Например, я создал кэш Google Cloud Storage для своего приложения и сократил время выполнения от 2 минут до 30 секунд. RPC являются узким местом в GAE.

0

Поставив хотя бы один экземпляр постоянным, вы получите отличное улучшение при первом использовании. Это занимает около 15 секунд. чтобы загрузить приложение в экземпляре, поэтому вы испытываете большое время запроса, когда никто не использовал приложение на некоторое время

+1

Я знаю время запуска. Как я уже сказал, он работает медленно на случайных интервалах. – FrEaKmAn

+0

Вы уверены, что это не потому, что загружается новый экземпляр. В зависимости от настроек вашего приложения в консоли GAE вы действительно можете негативно повлиять на ваше приложение, как это, в зависимости от настроек. Там было несколько разговоров об этом и статьях, но я не могу найти их сразу. Вы также можете использовать запросы на разогрев. – therewillbesnacks

2

Комбинируя некоторые ответы и добавив несколько вещей, чтобы проверить:

  1. Debug используя статистику приложения. Ищите «лестничные» ситуации и вызовы RPC. Возможно, что-то в вашем приложении вызывает вызовы RPC в определенных точках, которые не происходят в вашей логике все время.

  2. Измените настройки своего экземпляра. Добавьте некоторые постоянные/резидентные экземпляры и посмотрите, не изменилось ли это. Если вы разворачиваете новые экземпляры, все будет медленно, возможно, примерно в течение периода времени (30 секунд или более), который вы описываете. Это будет казаться случайным. Это не только количество экземпляров, но и какие комбинации слайдеров, которые вы используете (вы можете навредить себе слишком мало/много).

  3. Посмотрите на свое приложение. Вы занимаетесь большими объемами памяти в JVM? Выделение/освобождение памяти по своей сути является медленной операцией и может вызвать зависания. Вы уверены, что ваше замораживание не является проблемой JVM? Попробуйте реплицировать проблему локально и настройте настройки JVM xmx и xms и посмотрите, находите ли вы подобное поведение. Также профайлируйте свое приложение локально для проблем с памятью/производительностью. Вы можете сократить распределение, используя пулы, контейнеры DI и т. Д.

  4. Выполняете ли вы какие-либо задания/обработку cron на своих интерфейсных серверах? Постарайтесь переместить столько, сколько сможете, на фоновые задачи, такие как отправка писем. Интервалы могут показаться случайными, но это может быть результатом происходящего в зависимости от настроек вашей работы. 9 утра каждый день может не означать, что вы думаете, в зависимости от параметров cron/task. Следствие - переместить вещи на серверные серверы и вывести очереди.

Трудно дать вам хороший ответ без дополнительной информации. Лучший, кто может здесь сделать, - дать вам отправную точку, в которой почти каждый ответ здесь уже есть.

1

Google обычно не предоставляет контактную поддержку для множества услуг. Проблема, описанная о медленности движка Google, вероятно, вызвана холодным запуском. Передние экземпляры приложений для приложений Google спят примерно через 15 минут. Вы можете написать задание cron для экземпляров ping каждые 14 минут, чтобы поддерживать узлы.