我发现iisnode比使用node命令慢。
使用iisnode有很多benefits,但性能不好。
我正在使用here中的配置文件。
知道如何加快速度吗?
更新:
我注意到每个页面调用都会重新连接一个新的mongodb连接。
我该如何预防?
答案 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位!
下载:iisnode-core-iis7-v0.1.19.0-x64.msi
。
使用以下命令安装它: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
。
下载32位版本的node.js(例如node-v0.12.0-x86.msi
)并将其安装在C:\nodejs
创建新的应用程序池
Name: node.js Managed pipeline mode: Integrated
.NET Framework Version: No Managed Code Enable 32-Bit Applications: True Identity: administrator
假设您的 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"
在server.js
中确保您拥有process.env.PORT
var http = require('http'); http.createServer(function (req, res) { ... your code here ... }).listen(process.env.PORT);
(可选)如果您使用任何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);
将以下require()
放入您的网络根目录(例如web.config
)。这将使IIS7能够处理任何非节点文件,如图像,静态html文件和xml文件,并让node.js只处理自己的服务器端脚本。
让IIS处理静态文件并运行服务器端脚本 node.js并排是一个强烈推荐的做法,真正提升了 您网站的表现。
在此示例中,我使用重写规则处理C:\HostingSpaces\...\wwwroot
.asp
个文件。将iisnode
替换为您的node.js服务器脚本扩展名(例如*.asp*
)。请注意,通配符模式中没有根斜杠;这一点很重要,模式末尾的最后*.njs*
也很重要。
*