У меня проблема на нашем сервере сборки Windows 2003 x64 Build Server при вызове команд оболочки из сценария. Каждый вызов вызывает «утечку памяти» в файле подкачки, поэтому он довольно быстро растет, пока не достигнет максимума и машина не перестанет работать.
Я могу очень хорошо воспроизвести проблему, запустив сценарий Perl, например
for ($count=1; $count<5000; $count++) { system "echo huhu"; }
Он не зависит от языка сценариев, как и Lua:
for i=1,5000 do os.execute("echo huhu") end
Это также проблема при использовании PHP. (Их решение (удаление вторичного брандмауэра) неприменимо, поскольку на машине не запущены ни брандмауэр, ни сканер вирусов.)
Мы также можем воспроизвести проблему на других машинах разработчиков под управлением Windows XP 64, но не на XP 32 Bit.
Виновным в распределении является C:\WINDOWS\System32\svchost.exe -k netsvcs
который запускает все основные службы Windows.
Кто-нибудь знает проблему и как ее решить?
Мы нашли проблему, переустановив аналогичный шаг за шагом. Похоже, это было вызвано ошибкой в драйвере жесткой блокировки. После установки более новой версии драйвера проблема исчезла.
Аппаратная блокировка - это ключ для защиты от копирования программных продуктов, обычно это небольшой USB-штекер. Проблема была вызвана программным драйвером устройства для этого ключа, который поставлялся с программным обеспечением, защищенным от копирования.
Чтобы лучше понять, какой процесс, если вы знаете PID, запустите tasklist /svc
и посмотрите, сможете ли вы лучше определить, с какой службой это происходит. Если, как я предполагаю, он работает под IIS, он, вероятно, будет отображаться как W3SVC
Это происходит с вами при запуске сценария Perl из командной строки или при запуске IIS? Если это первое, я не уверен, почему это имеет смысл, потому что здесь не должно быть никаких сервисов. Если последнее, можете ли вы более полно описать свою установку?
Вы пробовали запускать что-нибудь вроде ProcessExplorer или Process Monitor от команды SysInternals в MS? Очень полезные инструменты.