2015-06-09 2 views
10

Как я могу использовать профилирование памяти (ОЗУ) в приложении App Engine? Я пытаюсь устранить ошибки, связанные с превышением предела памяти экземпляра. Я пробовал эти вещи, и пока они не работают или не предоставляют то, что мне нужно.Использование памяти профилирования в App Engine

  • Appstats. Это не дает информации об использовании памяти.
  • Apptrace. Он не обновляется с 2012 года и зависит от устаревшей версии SDK. Не работает из коробки.
  • Appengine-profiler. Не обеспечивает статистику памяти.
  • Gae-mini-profiler, который использует cProfile. Не обеспечивает статистику памяти.
  • guppy. После загрузки и установки кода библиотеки в папке моего приложения работает guppy.hpy() с ImportError: No module named heapyc
  • resource. Не является частью версии python SDK, поэтому я не могу ее использовать.

Я не прав по поводу любого из вышеперечисленных? Самый высокий ответ (не принятый) на вопрос this говорит, что нет способа для мониторинга использования памяти в App Engine. Это не может быть правдой. Может это?

EDIT

Я могу подтвердить, что GAE мини-профайлер делает работу. После установки, я мог изменить настройки в интерфейсе для «отбора проб с памятью», а затем увидеть этот отсчет:

Example UI showing memory usage

Спасибо всем contributors!

+0

yup. Вы не сможете детально просмотреть профиль, но вы можете получить текущее использование памяти из API. – marcadian

+0

FYI в прошлый раз, когда я поговорил с командой поддержки об этом, они предлагают использовать управляемый vm и установить guppy (вы не можете установить это на обычной среде appengine) – marcadian

ответ

7

GAE Mini Profiler действительно обеспечивает статистику памяти, если вы используете пробоотборник пробоотбора и установите memory_sample_rate ненулевой; при каждом снимке он укажет вам память, которая была в использовании. Вы захотите повернуть частоту выборки вниз, так как образец памяти занимает несколько мс для выполнения.

Редактировать: способ получения статистики памяти - это GAE runtime API, который устарел, но все еще работал с последним, что я знал; Я не уверен, есть ли хорошая замена.

2

Чтобы добавить к Ben's answer, начиная с 16 ноября 2015 года, несмотря на то, что он устарел, Google App Engine runtime API все еще работает. Официальной замены Google пока нет.

from google.appengine.api.runtime import runtime 
import logging 

logging.info(runtime.memory_usage()) 

Это приведет к статистике использования памяти, в которой номера выражены в МБ. Например:

current: 464.0859375 
average1m: 464 
average10m: 379.575 
Смежные вопросы