2013-08-01 3 views
0

У нас есть процесс (написанный на C++/managed), который получает сетевые данные через tcpip. После запуска процесса в то время как отслеживание сетевой нагрузки, кажется, что сеть переходит в состояние замораживания, и процесс не получает данные, в системе есть другие процессы, которые используют сеть (такую ​​же nic), которая работает нормально. процесс выходит из этой замороженной ситуации сам по себе через несколько минут.Процесс прекращения получения сетевых данных

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

ответ

0

Это будет очень трудно ответить конкретно, - не зная, что именно ваш процесс/приложение о,

- является ли это приложение чат сети, или файл-сервер/клиент, или ...

- без дополнительной информации о вашем процессе, как он реализован, какие библиотеки он использует, если это имеет отношение к проблеме.

Также вы не указали, какую ОС и среду вы используете для этого процесса, очень мало кто может помочь. Это может быть что угодно, занятый цикл ожидания в вашем коде, проблемы с блокировкой, если его многопоточный код, ... . Тем не менее, вот некоторые опции для проверки:

Если его Linux попытается выполнить команды для отладки и контролировать поведение процесса и посмотреть, что может быть проблемно

  1. сверху Проверить сверху, чтобы увидеть вл много ресурсов (процессор, память) ваш процесс использует, и если есть что-то аномально высокие значения использования процессора для Это.

  2. pstack Это должно складывать кадры процесса, выполняемого во время проблемы.

  3. NetStat Выполнить это с необходимыми параметрами (TCP/UDP), чтобы проверить, что стая сетевых сокетов открыли технолог

  4. gcore -s -c Это заставляет ваш процесс ядра, когда Указанная проблема происходит, а затем проанализировать, что файл ядра с помощью GDB GDB , а затем использовать команду, где в GDB строке, чтобы получить полный задний след процесса (который функционирует он выполнял последние и предыдущие вызовы функций.