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にアクセスするとはえぇー
Google AppEngineのdev_appserver高速化
2010/1/29 9278hit
関連日記
Android Bazaar and Conference 2011 Summer サテライト
GoogleAppEngineでGo言語によるHelloWorld
GoogleAppEngineでPython アップロード編
コメント
名前:kyo|投稿日:2010/01/30 09:29
同じことがレンタルサーバーでも起こるよ〜
ターミナル接続遅い場合は確認してみるといいよね。
名前:kenz|投稿日:2010/01/30 09:46
ローカルで鯖立てるときは注意やねぇ
家にあるXPでは発生してないんだけど、いつの間にこの仕様になったんだろうね