我一直在与App Engine的很长一段时间,我知道有将Appstats但那些只显示数据存储/内存缓存和其他不相关的实际内存使用统计信息。
我试图与集成apptrace会 (与所有组件最新版本),但我无法继续,因为我得到这个错误:
ImportError: dlopen(../apptrace/guppy/sets/setsc.so, 2): Symbol not found: __PyLong_AsScaledDouble
Referenced from: ../apptrace/guppy/sets/setsc.so
Expected in: flat namespace
所以我的问题是:什么是个人资料/监控内存/捕获内存泄漏和其他蟒蛇记忆相关的东西(本地或谷歌服务器或者上)的最佳方式(在最新的AppEngine SDK)?
顺便说一句,我们使用Python 2.7,我们在Mac OS X的工作(10.7.4)
我认为这是最好的工具
AppEngine上,探查-在Python谷歌应用程序引擎探查器-谷歌项目托管- > http://code.google.com/p/appengine-profiler/
08-13 12:40AM 04.586 /camstore/upload 200 508ms 351cpu_ms 293api_cpu_ms 0kb libwww-perl/5.825,gzip(gfe)
11.222.111.222 - - [13/Aug/2010:00:40:05 -0700] "POST /camstore/upload HTTP/1.1" 200 181 - "libwww-perl/5.825,gzip(gfe)"
"example.appspot.com:443" ms=508 cpu_ms=352 api_cpu_ms=293 cpm_usd=0.018512
[I] 08-13 12:40AM 05.021
Request summary (uptime=161, ID=6C0D1DD1:1.999999999 : Google App Engine/1.3.6 @ na5):
ms = 425.66 (api_datastore_v3 = 98%, other = 2%)
cpu_ms = 326.67 (api_datastore_v3 = 95%, other = 5%)
api_cpu_ms = 293.33 (api_datastore_v3 = 100%, other = 0%)
你也可以使用memcacheApi等STAF
这个职位是3岁,但是我想这个答案仍然是值得分享帮助别人。 我有高档谷歌App Engine的支持,并与他们联系有关这个同样的问题。
在谷歌的工程师告诉我,谷歌应用程序引擎运行时API已被弃用,但仍然功能。 它提供了一个名为memory_usage方法。
from google.appengine.api.runtime import runtime
import logging
logging.info(runtime.memory_usage())
这将输出的内存使用统计信息,其中编号以MB为单位表示。 例如:
current: 464.0859375
average1m: 464
average10m: 379.575
通过放置在关键点的记录语句在你的代码,你可以工作,这部分导致内存泄漏。
我认为有没有工具来监控在谷歌App Engine的内存使用情况,您可以配置文件程序,监控模块的导入时间,代码覆盖率。 所以没有工具来检测小内存泄漏。
Pympler: https://github.com/pympler/pympler目前有在线路1330在asizeof.py除去的所述“的ImportError”部分除块(即所以它捕获所有异常),为statvfs无法使用上GAE:
try:
from os import statvfs
_typedef_both(type(statvfs(curdir)), refs=_statvfs_refs, # statvfs_result
item=_sizeof_Cvoidp, leng=_len)
except: # ImportError: <- Comment out, or add an OSError except as well
pass
否则,完美的作品:
import logging, traceback
try:
from pympler.asizeof import asizeof
for variables in [locals(), globals()]:
logging.debug(str({k: asizeof(variables[k]) for k in variables})
except Exception as e:
logging.warning('Could not perform memory check: %s\n%s' % (str(e), str(traceback.format_exc())))
替代品看,以简介的最佳方式/优化对谷歌的应用引擎网站 。
为了固定这个特殊的问题,这篇文章(虽然旧) http://sourceforge.net/tracker/?func=detail&aid=3047282&group_id=105577&atid=641821建议重新安装/升级孔雀鱼。
PS:接下来的时间,你可以发布完整的追踪,以及相关的库版本