Особенности работы iisnode

В логах 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="&quot;%programfiles%\nodejs\node.exe&quot; &#45;&#45;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.

Print Friendly, PDF & Email

Добавить комментарий