私はGAEでpython27を使用しており、アプリの応答時間を短縮しようとしています。
cProfileによると、160万の関数呼び出しを実行するのに40秒(明らかに長すぎる)かかります(非常に高いようです)。私が今見つけることができる唯一の手がかりは、「{method'acquire'of'thread.lock'objects}」が40のうちの20を取るということです。(注:app.yamlでthreadsafeをfalseまたはtrueに設定しても、あまり効果がないようです。)
私がどこで間違っているのか、次にどこを調査するのかについて何か考えはありますか?ロックの取得にかかる時間が原因ではなく単なる症状である可能性があることは承知していますが、その場合、根本的な原因を特定するにはどうすればよいですか?他のすべての時間とcProfileの私の関数にリストされているncallsは妥当なようです。
また、2011年末にGAEが2.7で抱えていたパフォーマンスの問題が原因であるのではないかと思います。
- https://groups.google.com/forum/?fromgroups#!topic/google-appengine/jMah6aWfZWg
- https://code.google.com/p/googleappengine/issues/detail?id=6323
- Appengine、python27によるパフォーマンスの低下
参考までに、cProfile出力の例(行を削除)を次に示します。
Profile data:
1662549 function calls (1652247 primitive calls) in 39.545 seconds
Ordered by: cumulative time
ncalls tottime percall cumtime percall filename:lineno(function)
[lines removed]
10816 19.245 0.002 19.245 0.002 {method 'acquire' of 'thread.lock' objects}
[lines removed]
あなたが提供できるどんな助けにも前もって感謝します!