В логах windows можно увидеть следующую ошибку:
Faulting application name: w3wp.exe, version: 10.0.14393.0, time stamp: 0x57899b8a Faulting module name: ntdll.dll, version: 10.0.14393.2969, time stamp: 0x5ccd148a Exception code: 0xc0000005 Fault offset: 0x0000000000065553 Faulting process id: 0x2694 Faulting application start time: 0x01d88ba20ec97214 Faulting application path: c:\windows\system32\inetsrv\w3wp.exe Faulting module path: C:\Windows\SYSTEM32\ntdll.dll Report Id: f0c1f728-42d5-446e-b599-6bc97223eb12 Faulting package full name: Faulting package-relative application ID:
Проблема заключалась в том, что в один момент времени процесс node.exe потребляет оперативной памяти больше 2Gb.
Решением является добавление в web.config
<configuration>
<system.web>
<compilation debug="false"/>
</system.web>
<appSettings>
<add key="virtualDirPath" value="/arm" />
</appSettings>
<system.webServer>
<!-- indicates that the hello.js file is a node.js application
to be handled by the iisnode module -->
<webSocket enabled="false" />
<!--iisnode loggingEnabled="true" nodeProcessCommandLine=""%programfiles%\nodejs\node.exe" --inspect-brk" /-->
<iisnode nodeProcessCommandLine="node.exe --nouse-idle-notification --expose-gc --max-old-space-size=8192" />
<handlers>
<add name="iisnode" path="server.js" verb="*" modules="iisnode" />
</handlers>
<rewrite>
<rules>
<rule name="myapp">
<match url="/*" />
<action type="Rewrite" url="server.js" />
</rule>
<rule name="LogFile" patternSyntax="ECMAScript">
<match url="socket.io" />
<action type="Rewrite" url="server.js" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Вся магия тут в строке:
<iisnode nodeProcessCommandLine="node.exe --nouse-idle-notification --expose-gc --max-old-space-size=8192" />
Тут указывается, что для одного процесса выделяется 8Gb оперативки.
Итог: выяснили, что причиной падения w3wp.exe является node.exe процесс, в котором выделенная память превышает 2Gb.