簡単に再現できず、本番環境でのみ発生する例外をデバッグするにはどうすればよいですか?


9

例外が本番環境でのみ発生する問題に取り組んでいます。私はこれらの環境にアクセスできず、この例外の意味もわかりません。エラーの説明を見て、原因がわかりません。

javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure

誰かがこの種の問題に取り組む方法について私に助言してくれませんか?


4
これをStackOverflowに移動する必要がありますか?もっと反応があると思います。
DXM 2012年

10
一言:ロギング。
quant_dev 2012年

1
@DXM-一般的すぎるため、スタックオーバーフローのトピックから外れます。OPは、特定のソリューションではなく、戦略と手法の後にあります。失敗したコードが含まれていた場合、おそらくそれはスタックオーバーフローで動作する可能性があります。
ChrisF

私の経験では、このような問題のほとんどはセキュリティ構成の問題から発生しており、理解するのが難しい場合があります。他の人が述べたように、適切なロギングはそれを明らかにするのに役立ちます。
jfrankcarr

回答:


18

一般に、デバッグロギングの改善。知りたいことを理解し、それをコードに追加して、それをログに入れて、問題を解決できるようにします。当時の環境の詳細をキャプチャすることも役立ちます-どのような要求、いつなど。

具体的には、これを実行するクライアントの一般的なパターンを探します。最適化を見つけた場合は、TCPレイヤーのトラフィックをキャプチャします。

交換されたSSLメッセージを見ると、プロトコルの何が問題になっているのか、少なくとも要求の一般的なプロパティが何かがわかるはずです。それが得られたら、デバッグに近づくはずです。

ガイドとして、これは次の3つのうちの1つに由来すると思います。

  1. SSL以外の何かがSSLポートと通信しました。(ポートスキャンが一般的ですが、HTTPSポートへのHTTPも発生します。)
  2. クライアントはサーバーと受け入れ可能な暗号のセットを共有していません。
  3. クライアントは証明書を提供し、サーバーはヒスフィットです。(まれですが、可能です。)

1
おそらく、サーバーは自己署名証明書を提供するか、クライアントが知らない/信頼できないCAによって署名されています
CarlosCampderrósJan

#3は、いずれかの当事者が証明書の有効期限が切れたときに発生することを確認しました。
FrustratedWithFormsDesigner 2012年

私は実動システムでかなりのデバッグを行いました。実際にデバッガを使用したことはありません。常に画面の特定の部分にログを記録したり、キー値を書き込んだりしています。
Loren Pechtel 2012年

アドバイスありがとうございました。プロダクションバグを解決する実用的な方法は確かにあります。
C4CodeE4Exe

4

構成可能な最大ログレベルでログ戦略を使用することをお勧めします。(log4jのようなユーティリティhttp://logging.apache.org/log4j/http://en.wikipedia.org/wiki/Log4j)は、仕事をするかもしれません。

おそらくソフトウェアを再展開しなくても、エラーの原因を特定できるようにするには、構成可能なログレベル(または詳細度)が重要です。

エラーを見つけるのにこのような戦略では不十分な場合は、通信しているアプリケーションが生成したログを生成/読み取る方法を見つけてください。

エラーに関する詳細情報を電子メールで自動的に取得するメカニズムを実装することもできます。

より一般的には、計測に関するいくつかの記事を読むことができます。これは、ロギングとトレースを含むより大きなトピックです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.