web-dev-qa-db-ja.com

Google App Engine 500内部サーバーエラーのトラブルシューティング

GAE 500サーバーエラーを適切にトラブルシューティングする方法はありますか? console.developers.google.com->モニタリング->ログから確認できることはわかっていますが、あまりわかりません。ブラウザーネットワーク応答500の内部サーバーエラーから取得できるのと同じことだけです。

私が探しているのは、アプリで発生したエラーまたは例外のスタックトレースを実際に出力するApache.logまたはphp.logに似たログです。

2
Maksim Luzik

以前の回答は現在古くなっています(約3年後)。 Googleクラウドプラットフォームダッシュボードでエラー報告パネルを探します。

コード内の問題のスタックトレースが表示されます(問題がコード内にあり、おそらくエラーをstd errに記録する必要がある場合)。スタックトレースは、500エラーのデバッグに役立ちます。ここに私が受け取ったスタックトレースがあります...

ImportError: No module named flask_assistant

at <module> (/base/data/home/apps/f~XXXX/20180209t180735.407529010683953771/main.py:31)
at LoadObject (/base/alloc/tmpfs/dynamic_runtimes/python27/a7637d5531ec9deb_unzipped/python27_lib/versions/1/google/appengine/runtime/wsgi.py:85)
at _LoadHandler (/base/alloc/tmpfs/dynamic_runtimes/python27/a7637d5531ec9deb_unzipped/python27_lib/versions/1/google/appengine/runtime/wsgi.py:299)
at Handle (/base/alloc/tmpfs/dynamic_runtimes/python27/a7637d5531ec9deb_unzipped/python27_lib/versions/1/google/appengine/runtime/wsgi.py:240)

これは、500エラーが発生したときにスタックトレースを取得する方法です。

7

残念ながら、これに対する簡単な答えはありません。

通常、500は、Googleサーバーの内部エラーであるため、あまり実行できないものです。私たちが最も提案するのは、リクエストに対して exponential backoff を使用することです。これにより、インフラストラクチャが問題自体を「修正」できるようになります(通常、問題は修正され、すぐに修正されます)。

場合によっては、特定の動作(特定の製品に誤った形式のファイルや誤った変数タイプを送信するなど)に対して500をスローするエラーもあります。これらの場合、エラーはより明確になるはずです。そうでない場合は、できるだけ多くの情報を収集し、それを Issue Tracker に投稿してみてください。このエラーは、 "500"を超える情報で表現される可能性があります。

4
Patrice