iisnode性能非常慢

时间:2015-02-25 14:50:31

标签: node.js iisnode

我发现iisnode比使用node命令慢。

使用iisnode有很多benefits,但性能不好。

我正在使用here中的配置文件。

知道如何加快速度吗?


更新:

我注意到每个页面调用都会重新连接一个新的mongodb连接。

我该如何预防?

1 个答案:

答案 0 :(得分:4)

这是一个在Windows 64位服务器上集成Node.js和IIS7的提示。以下提示还解决了iisnode的一些不良性能问题,并演示了如何使用Node.js Native Extensions。

<强>要点:

  

创建新的非托管集成32位应用程序池   专用于node.js.没有其他应用程序应该使用此池。

这适用于64位,但由于SQLite包装,一些node.js Native Extensions(如Coconut2D)需要32位。如果您没有使用Native Extensions,那么您可以一直使用64位!

  1. 下载:iisnode-core-iis7-v0.1.19.0-x64.msi

  2. 使用以下命令安装它:msiexec /i iisnode-core-iis7-v0.1.19.0-x64.msi WOW=1。这将在64位计算机上安装32位版本的iisnode。请注意,iisnode.dll将安装在C:\Program Files (x86)\iisnode\iisnode.dll

  3. 下载32位版本的node.js(例如node-v0.12.0-x86.msi)并将其安装在C:\nodejs

  4. 创建新的应用程序池

    Name: node.js
    Managed pipeline mode: Integrated 
    
    .NET Framework Version: No Managed Code
    Enable 32-Bit Applications: True
    Identity: administrator
    
  5. 假设您的 Node.js服务器脚本文件为server.js。转到Web文件夹并创建文件node_start.cmd。在命令文件中,您应该将当前路径更改为wwwroot并使用server.js文件启动node.js。你应该使用双引号路径。

    C:
    cd "C:\HostingSpaces\...\wwwroot"
    "C:\nodejs\node.exe" "C:\HostingSpaces\...\wwwroot\server.js"
    
  6. server.js中确保您拥有process.env.PORT

    var http = require('http');
    http.createServer(function (req, res) {
        ... your code here ...
    }).listen(process.env.PORT);
    
  7. (可选)如果您使用任何node.js Native Extensions ,例如Coconut2D,SQLite,Cairo或WebKit模块,则必须复制{{ 1}} *.node文件夹中的文件和DLL。确保还设置NTFS安全性以允许执行这些文件或提升应用程序池以模拟管理员。要加载原生扩展程序,请使用wwwroot\node_modules,如下所示。

    var http = require('http');
    var Coconut2D = require("Coconut2D.node");
    http.createServer(function (req, res) {
        ... your code here ...
    }).listen(process.env.PORT);
    
  8. 将以下require()放入您的网络根目录(例如web.config)。这将使IIS7能够处理任何非节点文件,如图像,静态html文件和xml文件,并让node.js只处理自己的服务器端脚本

      

    让IIS处理静态文件并运行服务器端脚本   node.js并排是一个强烈推荐的做法,真正提升了   您网站的表现。

    在此示例中,我使用重写规则处理C:\HostingSpaces\...\wwwroot .asp个文件。将iisnode替换为您的node.js服务器脚本扩展名(例如*.asp*)。请注意,通配符模式中没有根斜杠;这一点很重要,模式末尾的最后*.njs*也很重要。

  9. *