У нас есть 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 году.
Любые указатели будут высоко оценены.
Спасибо!!
Задача ещё не решена.