tcp — утечка памяти / дескриптора с MSXML / C ++ 32-битной Windows Serverice на 64-битной Windows Server 2012 R2

У нас есть 32-разрядная устаревшая многопоточная служба Windows C ++, которая использует экземпляр Msxml2.ServerXMLHTTP.3.0 для отправки сообщения одному или нескольким удаленным компьютерам / хостам / конечным точкам.

Недавно мы перенесли эту услугу со стандартной (32-битной) ОС Windows 2008 на 64-битную ОС Windows 2012 R2. Сервис по-прежнему работает в 32-битном режиме.

Что было замечено, так это то, что все работает нормально, если удаленный хост подключен к сети. Однако, если удаленный хост переходит в автономный режим, то количество памяти и дескрипторов неконтролируемо растет, пока сервис в конечном итоге не завершится. Если удаленный узел подключается к сети или обменивается сообщением с любым другим узлом, то счетчик дескрипторов и память начинают уменьшаться до нормального уровня и начинают восстанавливаться, если какой-либо один узел / конечная точка (удаленный компьютер) отключается.

Также было замечено, что время ожидания метода IServerXMLHTTPRequest :: Send () в Windows 2012 занимает гораздо больше времени (3-4 секунды) по сравнению с Windows 2008 (менее 200 мс). Эта же служба отлично работает в 64-разрядной версии Windows 2008, но имеет проблемы с Windows 2012 R2.

Глядя на netstat, мы видим 2 запроса SYN_SENT для автономной конечной точки, для первого состояния SYN_SENT требуется около 3-4 секунд на тайм-аут. То же самое намного быстрее в 2008 году.

Любые указатели будут высоко оценены.

Спасибо!!

1

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]