Appstats -- 追踪appengine app的RPC使用

 

因为这个小破blog老是受over quota的影响不能访问,于是就想稍微调试一下资源使用,但是micolog这一坨代码真是不知道怎么下手。于是自然的想法就是先找出最费资源的地方,于是就发现了Google官方提供的这个工具——appstats

其实这个工具根本就不用安装,他已经存在appengine的环境里面了,需要的只是在自己的app里面打开它。

首先,需要在app根目录下添加一个appengine_config.py。

这个文件里的内容可以在app运行时对appengine的环境进行配置,是一个很早就存在但是很少有文档的玩意儿,以至于有人专门给Google提了个issue,最后才有了这份文档

要打开appstats,需要在appengine_config.py 里添加如下代码:

 

def webapp_add_wsgi_middleware(app):
    from google.appengine.ext.appstats import recording
    app = recording.appstats_wsgi_middleware(app)
    return app

 

然后如果当然需要配置app.yaml让自己可以通过web访问统计数据。

 

- url: /stats.*
  script: $PYTHON_LIB/google/appengine/ext/appstats/ui.py

另外,appstats只hook了google自己提供的库,所以限制了app必须使用google的run_wsgi_app来跑,不过人家特地说明了只是需要这么启动而已,你自己用django什么的没问题。

 

from google.appengine.ext.webapp.util import run_wsgi_app
def main():
    app = ...
    run_wsgi_app(app)

 

 

重新部署app,在页面上点几下,然后就可以打开app_url/stats来访问app的rpc统计信息了。

appstats

打开一看,原来是各种爬虫乱爬我的blog的feed导致datastore的读操作过多...

于是简单提增加了一下Feedhandler的结果的cache TTL,又是一个一行代码的改动...希望有用。

 

 

本文网址:http://blog.perlfect.me/2013/07/5/appstats-for-appengine.html

comments powered by Disqus