18

私はかなり長い間アプリエンジンを使用してきました。appstatsがあることは知っていますが、それらはデータストア/ memcacheと、実際のメモリ使用量の統計に関係のないその他のもののみを表示します。

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

だから私の質問は:メモリをプロファイリング/監視/メモリリークや他のPythonメモリ関連のもの(ローカルまたはGoogleサーバー上)をキャッチするための(最新のappengine sdkでの)最良の方法は何ですか?

ところで、私たちはPython 2.7を使用しており、Mac OS X(10.7.4)で作業しています。

4

5 に答える 5

6

この投稿は3年前のものですが、この回答は他の人を助けるために共有する価値があると思いました。私はプレミアムGoogleAppEngineをサポートしており、この同じ問題について彼らに連絡しました。

Googleのエンジニアから、Google 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

コードの重要なポイントにロギングステートメントを配置することで、メモリリークの原因となっている部分を特定できます。

于 2015-11-16T22:09:52.660 に答える
2

Google App Engineにはメモリ使用量を監視するツールはないと思います。プログラムのプロファイルを作成し、モジュールのインポート時間、コードカバレッジを監視できます。したがって、小さなメモリリークを検出するツールではありません。

于 2012-06-29T18:49:35.243 に答える
2

Pympler:https ://github.com/pympler/pympler statvfsはGAEで使用できないため、現在、asizeof.pyの1330行目のexceptブロックの「ImportError」部分を削除する必要があります(つまり、すべての例外をキャッチします)。

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())))
于 2017-08-17T16:10:42.697 に答える
1

別の方法については、Googleのappengineでウェブサイトをプロファイリング/最適化するための最良の方法を参照してください。

この特定の問題を修正するために、この投稿(古いですが)http://sourceforge.net/tracker/?func=detail&aid=3047282&group_id=105577&atid=641821はグッピーを再インストール/更新することを提案しています。

ps:次回は完全なトレースバックと関連するライブラリのバージョンを投稿できますか

于 2012-06-29T17:51:14.443 に答える
0

これが最高のユーティリティだと思います

appengine-profiler-PythonのGoogleAppEngineプロファイラー-GoogleProjectHosting-> 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やその他のスタッフも使用できます

于 2012-06-29T18:55:17.040 に答える