python2.5からpython2.7への切り替えをしようと思っているのですが、
GAEの本番サーバーにデプロイしたところ、
今までに比べてかなりlatencyが高い状態になってしまいました。
Average Latencyが
24282.8 ms
など5000msから1万ms程度で推移しています。
今までは、数百msで収まっていました。
Applicationのノブの設定で、
Pending Latency: ( 110ms - 1.0s )
と設定していますが、Latencyが全然下がってきません。
Frameworkはkay-frameworkで、
python2.7用のブランチを使っています。
インスタンス数は、従来より減っているようですが、
パフォーマンスは下げたくないというところです。
python系の皆様で、
python2.7に切り替えた方の状況などいかがでしょうか?
twitterで見ていたら、py2.5->py2.7で
10インスタンスから2インスタンスに減ったというような話を見ましたが、
パフォーマンスは同程度なのでしょうか?
ちなみに、今回デプロイして試しているのは本番サーバーとは言っても
用途は開発系で、Full Text Searchが使えるゾーンになっています。
このこともlatencyが高いことに影響しているのでしょうか?
(ちなみにpy2.7環境にするとFull Text Searchが試せないようですが)
設定やコードの書き方などでlatencyを下げられる方法などあれば、
ぜひご教授いただければと思います。
よろしくお願いします。
--
--------------------------
Yosuke Suzuki
設定やコードの書き方などでlatencyを下げられる方法などあれば、
ぜひご教授いただければと思います。
よろしくお願いします。
--
--------------------------
Yosuke Suzuki
--
このメールは Google グループのグループ「Google-App-Engine-Japan」の登録者に送られています。
このグループに投稿するには、google-app-...@googlegroups.com にメールを送信してください。
このグループから退会するには、google-app-engine...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/google-app-engine-japan?hl=ja からこのグループにアクセスしてください。
松尾さんといろいろやり取りさせていただいた結果、
python2.7でlatencyが高い問題の現状での解決ができましたので
フィードバックさせていただきます。
現状のpython2.7環境では、taskqueなどで重い処理をしていると
通常のサービス系にも影響が出てしまうようです。python2.5系では起きていませんでした。
そこで、taskqueの処理をbackendsに持って行くように変更しました。
backendsの利用は以下の松尾さんのブログを参考にしました。
http://blog.shehas.net/2011/09/07/taskqueue-instance
backends.yamlを作成して、
taskqueをまわすためのqueue.yamlとcron.yamlに作成したbackendへのtarget指定をしました。
ここまではほとんど時間もかからずに適用できました。
これだけでユーザー向けのレスポンスも改善し、正常になりました。
今回の問題はFull Text Searchとは関係なかったようです。
backends自体が初めて使ったのでいくつかはまっていたところが、ありましたので
書いておきます。
kay-frameworkでは
python manage.py appcfg update
でデプロイできますが、backendsはこれではデプロイされませんでした。
pyhotn manage.py appcfg backends update
とbackendsもデプロイ作業が必要でした。
それから、backendsからタスクが起動した際に、
/_ah/startで404エラーが出てしまってました。
以下をapp.yamlに設定すれば問題ないかと思っていたのですが、うまくいかず。。。
- url: /_ah/start
script: kay.main.application
login: admin
仕方がないので、
/_ah/start
が404にならないように、とにかく簡単なResponseを返す
関数を作って回避しています。
この辺かなり微妙ですので、他の解決策があれば、ご教授いただければと思います。
スズキ
2011年12月16日14:52 Takashi Matsuo ♟ <tma...@google.com>:
--
--------------------------
Yosuke Suzuki
ただ、そのことでユーザリクエストを受けるほうにも影響が出るとは
あまり考えていませんでした。
> # backends を使って対処済みのようですが、参考までに
backendsにしたことで、重さの問題は解消し
instance数はこちらでかなりコントロールできるようになりました。
taskqueに入れていたのはほとんどがユーザーの活動に関わらず、
定期タスクとして動いていた部分なので、python2.7にかかわらず
早めにbackendsに移行しておけばよかったです。
スズキ
--
--------------------------
Yosuke Suzuki