GAE アプリケーションに生産上の問題があります。この問題は、一部のユーザーのみに関連しているようです。
ローカル デバッガーを製品版に接続する可能性はありますか? 製品データを開発サーバーにコピーする必要は避けたいと思います。
ありがとう !
GAE アプリケーションに生産上の問題があります。この問題は、一部のユーザーのみに関連しているようです。
ローカル デバッガーを製品版に接続する可能性はありますか? 製品データを開発サーバーにコピーする必要は避けたいと思います。
ありがとう !
この状況は、 Google Cloud Debuggerの導入により、数日前に改善されました。
今週初めに Google Cloud Platform Live で、本番環境でのアプリケーションのトラブルシューティングを容易にする Cloud Debugger のベータ版リリースを開始しました。コード行を選択してウォッチポイントを設定するだけで、デバッガーはローカル変数と、サービスの任意のレプリカでその行を実行する次のリクエストからの完全なスタック トレースを返します。セットアップ時間はゼロで、複雑な構成はなく、ユーザーがパフォーマンスに影響を与えることはありません。
不可能です。ログを使用してデバッグすることしかできません。
私はなんとか問題を解決することができました。問題は、1つのプログラムが例外をスローしていて、それを適切にキャッチできなかったことです。コードは
catch (Exception e) {
e.printStackTrace();
}
開発プラットフォームでは、例外がコンソールでスローされました。本番環境での問題は、GAEコンソールに表示されないことです。これには2つの非常に悪い結果があります:
-> 1)エンドユーザーは、トランザクションが正常に終了しなかったことを知りません
-> 2)管理者には、問題が発生したという手がかりがなく、デバッグする方法もありません。
==>
したがって、コードを次のように置き換えました
catch (Exception e) {
final Logger log = Logger.getLogger(InternalServiceImpl.class.getName());
log.severe("Problem while updating XXX record : " + e.getLocalizedMessage());
updatedRecord.setRPCResult(DB_PROBLEM); // This is specific to my application to notify the end user
}
コードを変更してアプリケーションを再起動したところ、問題はトランザクションでのリソースの競合であることがわかりました。
本当に愚かな初心者の間違いでした。