Точность инструментов мониторинга - отладка задержки приложения - PullRequest
2 голосов
/ 23 сентября 2010

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

Поэтому я подключил некоторые инструменты мониторинга и посмотрел, что происходит (Wireshark для внешнего мониторинга сети через репликацию портов и Process Monitor, чтобы увидеть, чтопроисходило на локальной машине).

Мне удалось сопоставить tcp-пакеты, и они обычно находились в пределах миллисекунды друг от друга в обоих файлах журналов.Но в одном случае последний пакет серии был задержан более чем на 250 мс в Process Monitor по сравнению с wireshark (и наблюдалось ошибочное поведение приложения - из-за задержки).

Поскольку Wireshark был подключенна другом компьютере я вполне уверен, что то, что отслеживалось, было точным: все упакованное вовремя достигло сетевой карты.Что касается Process Monitor, я не совсем уверен, как он работает: когда регистрируются данные сети?Это когда доходит до сетевой карты?Когда это станет доступным для приложения?Когда приложение считывает данные?

В течение этих 250 мс было зарегистрировано несколько других событий, которые позволили мне поверить, что Process Monitor записывал правильно и что эта задержка в 250 мс не была "создана" им.

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

1 Ответ

1 голос
/ 25 сентября 2010

Вариант 2

Возможно, вы испытываете печально известные задержки в 250 мс, которые время от времени вызывает GC ( ссылка ).Вы можете точно измерить суспензии GC, используя специализированный хост CLR ( ссылка )

Опция 1 - исключено

Поскольку выИспользуя TCP, я рекомендую включить опцию NoDelay в своем сокете, чтобы исключить вероятность столкновения между алгоритмом Nagle и алгоритмом Delayed ACKs.Если вы испытываете «пакетирование» пакетов, в то время как иногда пакет «задерживается» примерно на 200 мс, то это может быть просто проблемой.
Более подробное объяснение этого поведения можно найти здесь .

...