Проблемы
Предположим, что имеется приложение или средство, которое работает в Windows 7 или Windows Server 2008 R2 и что приложение или средство выполняет одно или несколько из следующих задач:
-
Мониторинг другого сервера с помощью протокола ICMP или ping.exe
-
Запуск нескольких короткоживущих процессов для выполнения своей работы и процесс затем остановлена
-
Это любой сетевой активности и процесс затем остановлено другим приложением или сценария
В этом случае после сервер работает непрерывно несколько часов или несколько дней, можно заметить, что утечка памяти в службе сетевого интерфейса хранилища (NSI). Кроме того можно заметить следующие проблемы:
-
Если остановить мониторинг программного обеспечения перестает утечки памяти.
-
Если остановить приложение, а затем перезагрузите компьютер, не происходит утечка памяти происходит в службе NSI.
-
В некоторых случаях если вы отключите и затем включить сетевой адаптер можно заметить внезапного пик использования ЦП службой NSI. Кроме того использование памяти сразу приходит падения с 1 или 2 гигабайта (ГБ) 200 или 300 мегабайт (МБ).
Эта проблема может возникнуть в любом из следующих случаев.
Сценарий 1
Если приложение, например, ping.exe принудительно остановлен, это возможно, функция IcmpCloseHandle не вызывается. В этом случае служба NSI может обнаружить, что имеется клиент. Таким образом служба постоянно отправлять уведомления о все ICMP-сообщения. Поскольку клиент не существует, список уведомлений постоянно растет. Список не очищены до NSI служба остановлена.
Чтобы отправить сообщение ping, необходимо открыть дескриптор протокола ICMP, а затем использовать эти другие функции модуля поддержки IP для отправки и получения данных ICMP:
После приложение отправляет ping, его необходимо вызвать функцию IcmpCloseHandle , закрыть дескриптор протокола ICMP.
Сценарий 2
Разработчик создает приложение для отправки и приема сообщений ICMP с помощью интерфейсов API IPHlelper. Если только один маркер ICMP используется для отправки сообщений ICMP c для нескольких клиентов, а если это делает это с очень высокой скоростью, IPHelper API, который получает уведомление при получении сообщения не может поддерживать скорость. В этом случае можно заметить памяти службой NSI продолжает расти экспоненциально. Кроме того можно заметить, высокая загрузка ЦП службой NSI (nsisvc.dll).
Сценарий 3
У вас есть приложение или служба, которая прямо или косвенно используются функции модуля поддержки IP. Приложение перестает или будет остановлена, и он, не корректно завершаться при каждой регистрации уведомлений не отмененных (CancelMibChangeNotify2). В этом случае сервер NSI сохраняет регистрации ожидания для процесса, который будет остановлена. При наличии нескольких экземпляров приложения перерыв, служба NSI будет иметь много устаревших регистраций. Состояние асинхронного RPC и другая информация сохраняется для каждой регистрации. Это добавляет использования памяти. Обычно эти регистрации создаются для изменения интерфейса или изменение адреса одноадресной IP. Если нет никаких изменений в состоянии, по-прежнему поддерживаются этих регистраций.
В процессе регистрации используются следующие функции уведомления:
Причиной многих приложений не вызова (CancelMibChangeNotify2) или остановить процесс обсуждается в разделе функции NotifyIpInterfaceChange на веб-узле Microsoft Developer Network.
После вызова функции NotifyIpInterfaceChange для регистрации уведомлений об изменениях этих уведомлений продолжать будет отправить, пока приложение отменяет регистрацию для получения уведомлений об изменениях или остановки приложения. Если приложение, система автоматически отменяет регистрацию какая-либо Регистрация уведомлений об изменениях. Корпорация Майкрософт рекомендует настроить приложение явно регистрацию для уведомления об изменениях, прежде чем остановится.
Для каждой регистрации уведомления о внесении также распределить память невыгружаемого пула (NPP) дляNSpc тег.
Причина
Эта проблема возникает, так как процесс, который регистрируется для получения уведомлений завершает работу без первого Отмена регистрации в службе NSI. Таким образом утечка регистрации в NSI вызывает утечки памяти в службе NSI. Кроме того, NPP утечка памяти в NSpc тег контекстов NSI прокси-сервера (NSI.dll).
Решение
Сведения об исправлении
Доступно исправление от службы поддержки Майкрософт. Однако данное исправление предназначено для устранения только проблемы, описанной в этой статье. Применяйте это исправление только в тех случаях, когда наблюдается проблема, описанная в данной статье. Это исправление может проходить дополнительное тестирование. Таким образом если вы не подвержены серьезно этой проблеме, рекомендуется дождаться следующего пакета обновления, содержащего это исправление.
Если исправление доступно для скачивания, имеется раздел "Пакет исправлений доступен для скачивания" в верхней части этой статьи базы знаний. Если этот раздел не отображается, обратитесь в службу поддержки для получения исправления.
Примечание. Если наблюдаются другие проблемы или необходимо устранить неполадки, вам может понадобиться создать отдельный запрос на обслуживание. Стандартная оплата за поддержку будет взиматься только за дополнительные вопросы и проблемы, которые не соответствуют требованиям конкретного исправления. Чтобы просмотреть полный список телефонов поддержки и обслуживания клиентов корпорации Майкрософт или создать отдельный запрос на обслуживание, посетите следующий веб-сайт корпорации Майкрософт:
http://support.microsoft.com/contactus/?ws=support
Примечание. В форме "Пакет исправлений доступен для скачивания" отображаются языки, для которых доступно исправление. Если нужный язык не отображается, значит исправление для данного языка отсутствует.
Предварительные условия
Для установки этого исправления необходимо иметь Пакет обновления 1 для Windows 7 или Windows Server 2008 R2 установлен.
Требование к перезапуску
После установки исправления компьютер необходимо перезагрузить.
Сведения о замене исправлений
Это исправление не заменяет все ранее выпущенные исправления.
Сведения о файлах
Английский (США) версия данного исправления устанавливает файлы с атрибутами, указанными в приведенных ниже таблицах. Даты и время для файлов указаны в формате UTC. Даты и время для этих файлов на локальном компьютере отображаются с учетом часового пояса и перехода на летнее время. Кроме того, даты и время могут изменяться при выполнении определенных операций с файлами.
Информация о файлах для Windows 7 и Windows Server 2008 R2 и примечания
Важно! Исправления для Windows 7 и Windows Server 2008 R2 включены в одни и те же пакеты. Однако на странице запроса исправления они указаны для обеих операционных систем. Чтобы запросить исправление для одной или обеих операционных систем, выберите его в разделе "Windows 7" и (или) "Windows Server 2008 R2". Сведения о том, для каких операционных систем предназначено исправление, см. в разделе "Информация в данной статье применима к" посвященной ему статьи.
-
Файлы, относящиеся к определенному продукту, этапу разработки (RTM, SPn) и направлению поддержки (LDR, GDR) можно определить путем проверки номера версий файлов, как показано в следующей таблице.
Версия
Продукт
SR_Level
Направление поддержки
6.1.760 0. 16 - xxx
Windows 7 и Windows Server 2008 R2
RTM
GDR
6.1.760 1. 22 - xxx
Windows 7 и Windows Server 2008 R2
SP1
LDR
-
Направления поддержки GDR содержат только те исправления, которые выпускаются повсеместно и предназначены для устранения распространенных критических проблем. Направления поддержки LDR содержат дополнительные исправления для широко распространенных исправлений.
-
Файлы МАНИФЕСТА (.manifest) и MUM (.mum), устанавливаемые для каждой среды, указаны отдельно в разделе «Дополнительные «сведения о файлах для Windows 7 и Windows Server 2008 R2.
-
Файлы MUM и MANIFEST, а также связанные файлы каталога безопасности (CAT) чрезвычайно важны для поддержания состояния обновленных компонентов. Файлы каталога безопасности, атрибуты для которых не указаны, подписаны цифровой подписью Майкрософт.
Для всех поддерживаемых 32-разрядных (x86) версий Windows 7
Имя файла |
Версия файла |
Размер |
Дата |
Время |
Платформа |
Nsi.dll |
6.1.7600.16385 |
8,704 |
14-Jul-2009 |
01:16 |
x86 |
Nsiproxy.sys |
6.1.7600.16385 |
16,896 |
13-Jul-2009 |
23:12 |
x86 |
Nsisvc.dll |
6.1.7601.22590 |
20,480 |
05-Feb-2014 |
02:03 |
x86 |
Winnsi.dll |
6.1.7600.16385 |
16,896 |
14-Jul-2009 |
01:16 |
x86 |
Для всех поддерживаемых 64-разрядных (x64) версий Windows 7 и Windows Server 2008 R2
Имя файла |
Версия файла |
Размер |
Дата |
Время |
Платформа |
Nsi.dll |
6.1.7600.16385 |
13,824 |
14-Jul-2009 |
01:41 |
x64 |
Nsiproxy.sys |
6.1.7601.22590 |
24,576 |
05-Feb-2014 |
01:15 |
x64 |
Nsisvc.dll |
6.1.7601.22590 |
26,624 |
05-Feb-2014 |
02:42 |
x64 |
Winnsi.dll |
6.1.7600.16385 |
26,112 |
14-Jul-2009 |
01:41 |
x64 |
Nsi.dll |
6.1.7601.22590 |
8,704 |
05-Feb-2014 |
02:03 |
x86 |
Winnsi.dll |
6.1.7601.22590 |
16,896 |
05-Feb-2014 |
02:04 |
x86 |
Для всех поддерживаемых версий Windows Server 2008 R2 для систем на базе процессоров IA-64
Имя файла |
Версия файла |
Размер |
Дата |
Время |
Платформа |
Nsi.dll |
6.1.7600.16385 |
18,944 |
14-Jul-2009 |
01:48 |
IA-64 |
Nsiproxy.sys |
6.1.7601.22590 |
53,760 |
05-Feb-2014 |
00:50 |
IA-64 |
Nsisvc.dll |
6.1.7601.22590 |
60,928 |
05-Feb-2014 |
01:48 |
IA-64 |
Winnsi.dll |
6.1.7600.16385 |
38,912 |
14-Jul-2009 |
01:50 |
IA-64 |
Nsi.dll |
6.1.7601.22590 |
8,704 |
05-Feb-2014 |
02:03 |
x86 |
Winnsi.dll |
6.1.7601.22590 |
16,896 |
05-Feb-2014 |
02:04 |
x86 |
Сведения о дополнительных файлах для Windows 7 и Windows Server 2008 R2
Дополнительные файлы для всех поддерживаемых 86-разрядных версий Windows 7
Имя файла |
Package_1_for_kb2847346~31bf3856ad364e35~x86~~6.1.1.0.mum |
Версия файла |
Not Applicable |
Размер |
1,822 |
Дата (UTC) |
05-Feb-2014 |
Время (UTC) |
06:35 |
Платформа |
Not Applicable |
Имя файла |
Package_2_for_kb2847346~31bf3856ad364e35~x86~~6.1.1.0.mum |
Версия файла |
Not Applicable |
Размер |
1,805 |
Дата (UTC) |
05-Feb-2014 |
Время (UTC) |
06:35 |
Платформа |
Not Applicable |
Имя файла |
Package_3_for_kb2847346~31bf3856ad364e35~x86~~6.1.1.0.mum |
Версия файла |
Not Applicable |
Размер |
1,807 |
Дата (UTC) |
05-Feb-2014 |
Время (UTC) |
06:35 |
Платформа |
Not Applicable |
Имя файла |
Package_for_kb2847346_rtm~31bf3856ad364e35~x86~~6.1.1.0.mum |
Версия файла |
Not Applicable |
Размер |
1,459 |
Дата (UTC) |
05-Feb-2014 |
Время (UTC) |
06:35 |
Платформа |
Not Applicable |
Имя файла |
Package_for_kb2847346_sp1~31bf3856ad364e35~x86~~6.1.1.0.mum |
Версия файла |
Not Applicable |
Размер |
1,918 |
Дата (UTC) |
05-Feb-2014 |
Время (UTC) |
06:35 |
Платформа |
Not Applicable |
Имя файла |
X86_dfca12963d5c03edca970b29ad513eb4_31bf3856ad364e35_6.1.7601.22590_none_ff32d7aebbbb6891.manifest |
Версия файла |
Not Applicable |
Размер |
699 |
Дата (UTC) |
05-Feb-2014 |
Время (UTC) |
06:35 |
Платформа |
Not Applicable |
Имя файла |
X86_microsoft-windows-usermodensi_31bf3856ad364e35_6.1.7601.22590_none_749890603f18301d.manifest |
Версия файла |
Not Applicable |
Размер |
8,301 |
Дата (UTC) |
05-Feb-2014 |
Время (UTC) |
06:38 |
Платформа |
Not Applicable |
Дополнительные файлы для всех поддерживаемых версий x64 под управлением Windows 7 и Windows Server 2008 R2
Имя файла |
Amd64_37e172e525713d1718cb98daea282913_31bf3856ad364e35_6.1.7601.22590_none_9888f3a0165278fe.manifest |
Версия файла |
Not Applicable |
Размер |
1,048 |
Дата (UTC) |
05-Feb-2014 |
Время (UTC) |
06:35 |
Платформа |
Not Applicable |
Имя файла |
Amd64_3839818617f8250fd6f59e35da1df9bd_31bf3856ad364e35_6.1.7601.22590_none_8fbf427f98b0d1cb.manifest |
Версия файла |
Not Applicable |
Размер |
703 |
Дата (UTC) |
05-Feb-2014 |
Время (UTC) |
06:35 |
Платформа |
Not Applicable |
Имя файла |
Amd64_a9af583825031567fe0548a9c2c728ab_31bf3856ad364e35_6.1.7601.22590_none_59ced916edddc9da.manifest |
Версия файла |
Not Applicable |
Размер |
703 |
Дата (UTC) |
05-Feb-2014 |
Время (UTC) |
06:35 |
Платформа |
Not Applicable |
Имя файла |
Amd64_microsoft-windows-usermodensi_31bf3856ad364e35_6.1.7601.22590_none_d0b72be3f775a153.manifest |
Версия файла |
Not Applicable |
Размер |
8,305 |
Дата (UTC) |
05-Feb-2014 |
Время (UTC) |
06:41 |
Платформа |
Not Applicable |
Имя файла |
Package_1_for_kb2847346~31bf3856ad364e35~amd64~~6.1.1.0.mum |
Версия файла |
Not Applicable |
Размер |
1,832 |
Дата (UTC) |
05-Feb-2014 |
Время (UTC) |
06:35 |
Платформа |
Not Applicable |
Имя файла |
Package_2_for_kb2847346~31bf3856ad364e35~amd64~~6.1.1.0.mum |
Версия файла |
Not Applicable |
Размер |
2,237 |
Дата (UTC) |
05-Feb-2014 |
Время (UTC) |
06:35 |
Платформа |
Not Applicable |
Имя файла |
Package_3_for_kb2847346~31bf3856ad364e35~amd64~~6.1.1.0.mum |
Версия файла |
Not Applicable |
Размер |
2,015 |
Дата (UTC) |
05-Feb-2014 |
Время (UTC) |
06:35 |
Платформа |
Not Applicable |
Имя файла |
Package_4_for_kb2847346~31bf3856ad364e35~amd64~~6.1.1.0.mum |
Версия файла |
Not Applicable |
Размер |
2,036 |
Дата (UTC) |
05-Feb-2014 |
Время (UTC) |
06:35 |
Платформа |
Not Applicable |
Имя файла |
Package_for_kb2847346_rtm~31bf3856ad364e35~amd64~~6.1.1.0.mum |
Версия файла |
Not Applicable |
Размер |
1,467 |
Дата (UTC) |
05-Feb-2014 |
Время (UTC) |
06:35 |
Платформа |
Not Applicable |
Имя файла |
Package_for_kb2847346_sp1~31bf3856ad364e35~amd64~~6.1.1.0.mum |
Версия файла |
Not Applicable |
Размер |
2,830 |
Дата (UTC) |
05-Feb-2014 |
Время (UTC) |
06:35 |
Платформа |
Not Applicable |
Имя файла |
Wow64_microsoft-windows-usermodensi_31bf3856ad364e35_6.1.7601.22590_none_db0bd6362bd6634e.manifest |
Версия файла |
Not Applicable |
Размер |
4,690 |
Дата (UTC) |
05-Feb-2014 |
Время (UTC) |
02:16 |
Платформа |
Not Applicable |
Дополнительные файлы для всех поддерживаемых версий Windows Server 2008 R2 с архитектурой IA-64
Имя файла |
Ia64_44d491142723affea686ec2fba3cb4ac_31bf3856ad364e35_6.1.7601.22590_none_dc26e555dbabe437.manifest |
Версия файла |
Not Applicable |
Размер |
1,046 |
Дата (UTC) |
05-Feb-2014 |
Время (UTC) |
06:35 |
Платформа |
Not Applicable |
Имя файла |
Ia64_microsoft-windows-usermodensi_31bf3856ad364e35_6.1.7601.22590_none_749a34563f163919.manifest |
Версия файла |
Not Applicable |
Размер |
8,303 |
Дата (UTC) |
05-Feb-2014 |
Время (UTC) |
06:35 |
Платформа |
Not Applicable |
Имя файла |
Package_1_for_kb2847346~31bf3856ad364e35~ia64~~6.1.1.0.mum |
Версия файла |
Not Applicable |
Размер |
2,029 |
Дата (UTC) |
05-Feb-2014 |
Время (UTC) |
06:35 |
Платформа |
Not Applicable |
Имя файла |
Package_for_kb2847346_sp1~31bf3856ad364e35~ia64~~6.1.1.0.mum |
Версия файла |
Not Applicable |
Размер |
1,446 |
Дата (UTC) |
05-Feb-2014 |
Время (UTC) |
06:35 |
Платформа |
Not Applicable |
Имя файла |
Wow64_microsoft-windows-usermodensi_31bf3856ad364e35_6.1.7601.22590_none_db0bd6362bd6634e.manifest |
Версия файла |
Not Applicable |
Размер |
4,690 |
Дата (UTC) |
05-Feb-2014 |
Время (UTC) |
02:16 |
Платформа |
Not Applicable |
Обходное решение
Чтобы обойти эту проблему, воспользуйтесь одним из следующих возможных решений в зависимости от конкретной ситуации.
Временное решение для случая 1
Убедитесь в том, что приложения, например, ping.exe, не завершается принудительно. Вместо этого разрешите приложению корректно завершения работы.
Кроме того обновление до Windows Server 2012. Эта проблема исправлена в Windows Server 2012. Это исправление предотвращает утечки памяти, независимо от того, как приложение будет остановлено NSI службы.
Временное решение для сценария 2
Разработчик программного обеспечения следует создать несколько дескрипторов ICMP для отправки запросов проверки связи ICMP. При отправке большого количества пакетов ICMP вы должны использовать незащищенные сокеты и непосредственно отправлять и получать пакеты ICMP на RAW socket. Это позволит получить максимальное быстродействие.
Временное решение для сценария 3
В этом случае если отключить и включить сетевой адаптер использование памяти немедленно уменьшается, но имеет короткий пик использования ЦП.
Так происходит, когда происходит изменение в интерфейсе или IP-адрес, служба NSI уведомление ядром. Служба NSI пытается notifiy все клиенты, зарегистрированные для уведомления. Когда служба пытается уведомить клиентского процесса, который не существует, RPC сообщает об ошибке. Таким образом служба NSI удаляет все сведения о состоянии, сохраненного в клиентском процессе. После этого, что память освобождается.
В этом случае регистрируются несколько сотен тысяч уведомлений. После возникновения события всю память для этих клиентов недопустимый освобождается.
Эта проблема исправлена в Windows 8.