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

У нас есть 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 году.

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

Спасибо!!

0 ответов

Другие вопросы по тегам