Как я могу отлаживать исключения, которые нелегко воспроизвести и возникают только в производственной среде?

9

Я работаю над проблемой, когда исключение возникает только в нашей производственной среде. У меня нет доступа к этим средам, и я не знаю, что означает это исключение. Глядя на описание ошибки, я не могу понять причину.

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

Кто-нибудь, пожалуйста, посоветуйте мне, как решить эту проблему?

C4CodeE4Exe
источник
4
это должно быть перенесено в StackOverflow? Я думаю, что вы получите больше ответа там.
ДХМ
10
Одним словом: регистрация.
quant_dev
1
@DXM - это было бы не по теме для переполнения стека, так как оно слишком общее. ОП преследует стратегии и методы, а не конкретное решение. Если код, который не удался, был включен, возможно, он мог бы работать с переполнением стека.
ChrisF
По моему опыту, большинство подобных проблем возникают из-за проблем с настройкой безопасности и могут быть сложными для понимания. Как уже упоминали другие, хорошая регистрация поможет выявить это.
jfrankcarr

Ответы:

18

В общем, лучше отладка логов. Выясните, что вы хотите знать, добавьте это в код и внесите это в журналы, чтобы вы могли разобраться. Получение более подробной информации об окружающей среде в то же время помогает - какой запрос, когда и т. Д.

В частности, я хотел бы найти общий шаблон для клиентов, который использует этот метод - и если вы нашли такой вариант, - оптимизировать, - но затем пойти и захватить трафик уровня TCP.

Изучение обмена сообщениями SSL должно дать вам некоторое представление о том, что не так в протоколе, или, по крайней мере, каковы общие свойства запроса. Если у вас есть это, оно должно быть ближе к отладке.

Как руководство, я бы предположил, что это происходит от одной из трех вещей:

  1. То, что не является SSL, говорило с портом SSL. (сканирование портов является обычным делом, но HTTP к порту HTTPS также бывает.)
  2. Клиент не разделяет приемлемый набор шифров с сервером.
  3. Клиент предлагает сертификат, а сервер имеет шипение. (Необычно, но возможно.)
Даниэль Питман
источник
1
возможно сервер предлагает самоподписанный сертификат или подписанный CA, который клиент не знает / не доверяет
Карлос Кампдеррос
Я думаю, что видел # 3, когда одна из сторон истекла сертификаты.
FrustratedWithFormsDesigner
Я сделал немало отладки на производственных системах. Никогда еще я не использовал отладчик, он всегда либо регистрировал, либо записывал значения ключей в определенную часть экрана.
Лорен Печтел
Спасибо всем за ваш совет. Я уверен, что есть прагматические способы решить производственную ошибку.
C4CodeE4Exe
4

Я бы рекомендовал использовать стратегию ведения журнала с настраиваемым максимальным уровнем ведения журнала. Утилита, подобная log4j ( http://logging.apache.org/log4j/ , http://en.wikipedia.org/wiki/Log4j ) может выполнить эту работу.

Настраиваемый уровень ведения журнала (или многословие) важен для определения причины ошибки, возможно, без необходимости повторного развертывания программного обеспечения.

Если такой стратегии недостаточно, чтобы найти ошибку, попробуйте найти, как создать / прочитать журналы, создаваемые приложениями, с которыми общается ваше приложение.

Вы также можете внедрить некоторый механизм для автоматического получения дополнительной информации об ошибках по электронной почте.

В более общем плане вы можете прочитать некоторые статьи об инструментах, которые являются более обширной темой, которая включает ведение журнала и трассировку.

PL
источник