У нас есть многопоточное приложение на основе C++ для Windows, которое захватывает сетевые пакеты в режиме реального времени с помощью библиотеки WinPCAP, а затем обрабатывает эти пакеты для мониторинга сети. Это приложение предназначено для работы 24x7. Наше приложение легко потребляет 7-8 ГБ оперативной памяти.
Проблема, которую мы наблюдаем: Допустим, приложение отслеживает сетевой трафик со скоростью 100 Мбит/с и потребляет 60 % ресурсов ЦП. Мы заметили, что когда приложение продолжает работать в течение более длительного времени, например, день или два, потребление процессора приложением увеличивается примерно до 70-80%, даже если оно по-прежнему обрабатывает трафик со скоростью 100 Мбит/с (выполняя тот же объем работы). .
Мы попытались отладить эту проблему на уровне потоков с помощью ProcessExplorer и заметили, что потоки захвата пакетов со временем начинают потреблять больше ресурсов ЦП. Эта проблема не решается даже после перезапуска приложения. Только перезагрузка машины решает проблему.
Мы заметили, что эта проблема легко воспроизводится в ОС Windows 2012 R2 Server во время ночных запусков. В Windows 7 проблема возникает, но в течение нескольких дней.
Любая идея, что может быть причиной этого?
Заранее спасибо