Google AppEngineのdev_appserver高速化

2010/1/29 9278hit

Google AppEngine SDKのdev_appserverを使うと
ローカルでweb、CGI、DBまでが起動して
http://localhost:8080へ接続するだけで実環境のように動作を試せるので
凄く便利なんだけれど、もの凄く遅い

それも処理に時間がかかるというより、
ページを呼びに行った後、数秒間なにも処理されない時間があるように感じる。
画像ファイル等の静的ファイルも1つずつのんびり読み込まれていく。

本番のGoogle AppEngineにアップロードしてappspotにアクセスすればサクサクだし
Core2DuoやAthlon64x2のマシンでも同じような反応なので
処理が重いのではなく、処理をしていない時間があるみたい。

しかも
http://localhost:8080だと遅いのに
http://127.0.0.1:8080だと早くなる

localhostと127.0.0.1は等価と思ってたんだけど・・・
コマンドラインを立ち上げて
ping localhost
してみると

Cameron [::1]に ping を送信しています 32 バイトのデータ:
とか出てきた。

[::1]てIPv6のアドレスだよね
そうか、いつの間にやらlocalhostもIPv6化対応していたのか
 余談Cameronはホスト名で女優のキャメロンディアスから取った。

http://[::1]:8080/ にアクセスしても接続できないので
dev_appserverはIPv6に対応していないみたい。

つまり
http://localhost:8080すると
まずIPv6でアクセスしに行って、タイムアウト待ちが発生し
その後IPv4でアクセスしてページを表示していると推測
タイムアウト待ちだからマシンやファイルの重さに依存しないし、
appspotだとIPv4だからタイムアウトが発生しないので軽いとすれば辻褄が合う

ってことで、hostsファイルを使って
localhostをIPv4(127.0.0.1)でアクセスするように設定してみた。

管理者権限でメモ帳を開く
WindowsVista/7の場合
→プログラムとファイルの検索に[notepad]と打ち込みnotepad.exeを右クリック
→管理者として実行を選択。

WindowsXPの場合
→管理者アカウントでWindowsにログイン
→スタート-プログラム-アクセサリメモ帳を実行

%windir%\system32\drivers\etc\hosts を開く
# 127.0.0.1 localhost

127.0.0.1 localhost
に変更して上書き保存
(名前をつけて保存するときはhosts.txtにならないように注意)

んでもってhttp://localhost:8080にアクセスするとはえぇー

前:GAEのDatastoreではまった 次:横浜テクニカルショウ

関連キーワード

[Python][IT]

コメント

名前:kyo|投稿日:2010/01/30 09:29

同じことがレンタルサーバーでも起こるよ〜
ターミナル接続遅い場合は確認してみるといいよね。

名前:kenz|投稿日:2010/01/30 09:46

ローカルで鯖立てるときは注意やねぇ
家にあるXPでは発生してないんだけど、いつの間にこの仕様になったんだろうね

コメントを投稿する