Как найти потерю пакетов в Wireshark?

Вот тот, который казался мне очевидным на протяжении многих лет, но для всех остальных это анафема: почти всегда ошибочно отключать утверждения C (или C ++) с помощью NDEBUG в сборках 'release'. (Исключение составляют случаи, когда штраф за время или пространство недопустим).

Обоснование: если утверждение не выполнено, ваша программа перешла в состояние, в котором

  • никогда не тестировалось
  • разработчику не удалось написать стратегию восстановления для
  • разработчик фактически задокументировал его как немыслимое.

Тем не менее, «лучшая отраслевая практика» заключается в том, что эта штука должна просто запутаться и надеяться на лучшее, когда дело доходит до того, чтобы работать с данными ваших клиентов.

7
задан Peter Mortensen 16 March 2015 в 12:13
поделиться

1 ответ

Это зависит от обстоятельств. Когда вы отправляете сообщение актору из кода, не являющегося актором, ActorProxy автоматически создается и сохраняется в локальном потоке. Это создает потенциальную утечку памяти, хотя и очень небольшую, потому что ActorProxy не будет GC'd, пока поток не будет GC'd. ActorProxy по существу позволяет потоку, не являющемуся актором, во многих отношениях вести себя как актор, включая получение сообщения.

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

[Изменить] Хм ... Кажется, у меня проблемы с чтением вопросов! Окружение его блоком актера создает новый объект актера, который будет правильно обработан сборщиком мусора после его завершения. Имейте в виду, что размещение отправленного сообщения в блоке актора означает, что отправка сообщения будет выполнена в новой реакции в другом потоке, а не в потоке, создающем актера.

я получу одинаковые результаты в зависимости от того, на каком конце вы его запускаете.]

В этом случае - я полагаю, вам нужно запустить Wireshark на каждом конце и посмотреть статистику пакетов (количество пакетов A -> B, B-> A) и сравните различия. Вы не можете полагаться на повторные попытки TCP и т. Д., Поскольку это не обязательно означает, что пакет потерян.

Кроме того, вам необходимо настроить фильтр захвата только для FTP, если вы не хотите, чтобы ваша статистика искажалась другими вещами. такие как ARP, поиск DNS и т. д.

-1
ответ дан 7 December 2019 в 12:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: