iisnode+Node+Express+socket.io配置IIS环境的艰辛历程(未完)

系统基础环境说明:

Windows Server 2008 R2 Enterprise x64
IIS 7.5
Node v8.9.3

IIS新装模块:

URL Rewrite
iisnode-full-v0.2.21-x64.msi

Node应用程序:

express v4.15.5
socket.io v2.0.4

Node package.json文件如下:

IIS创建网站MyWeb_1,默认的80端口,程序池名称AppPool_1 (集成),Node应用根目录D:\www\MyWeb_1

配置文件web.config如下:

浏览器打开网站 http://我的域名/


页面提示错误信息一:

iisnode encountered an error when processing the request.

You are receiving this HTTP 200 response because system.webServer/iisnode/@devErrorsEnabled configuration setting is ‘true’.

In addition to the log of stdout and stderr of the node.exe process, consider using debugging and ETW traces to further diagnose the problem.

The node.exe process has not written any information to stderr or iisnode was unable to capture this information. Frequent reason is that the iisnode module is unable to create a log file to capture stdout and stderr output from node.exe. Please check that the identity of the IIS application pool running the node.js application has read and write access permissions to the directory on the server where the node.js application is located. Alternatively you can disable logging by settingsystem.webServer/iisnode/@loggingEnabled element of web.config to ‘false’.

解决错误一的记录:

查看iisnode在应用根目录生成的iisnode文件夹下的日志,已经生成txt日志文件,查看内容,里面保存我在制作应用时的输出内容:“数据库已连接”。

Express框架应用启动是从./bin/www启动的,那么需要修改web.config配置文件,修改后如下:

浏览器打开网站 http://我的域名/

网站只正常运行了大约不到1分钟的时间,socket.io就断开了,刷新网页之后出现如下提示。


页面中错误提示信息二:

Service Unavailable


HTTP Error 503. The service is unavailable.

====================

解决错误提示二的记录:

各种修改web.config,各种测试,这就不细说了,最后查看系统错误日志,提示如下:

应用程序错误日志:

之后IIS中查看一下程序池吧,发现它已经躺尸(停止运行)了。

结合前端来分析,现在的问题应该socket.io与程序池之间的问题造成的,如果是没有socket.io模块的Express框架网站,应该可以正常运行了,但是我的项目已经用socket.io写好了,不能改了。

继续研究…

打开windows任务管理器 >>性能,同时启动网站的程序池(刚才挂掉的那个),浏览器一直打开着我的页面,CPU使用率飙升,均值应该在60%左右,最高时到顶了。运行几十秒后主动关闭程序池,CPU使用率迅速降至均值20%左右。不解socket.io断开的根源在哪……是socket.io连接程序池压力过大?还是我写的源码有问题?还是其它的什么?……

20180101162906

我这就一个客户端连接着网站,那如果100个客户端同时连接着,是不是瞬间就挂掉了呢?

继续研究……

http://www.jb51.net/article/61569.htm

上面的思路:asp环境下的bin目录是i不s可访问的,那么就在根目录建个文件(index.js),调用/bin/www文件,修改方法如下:

index.js文件内容:

web.config文件内容:

 

结果,socket.io还是自动断开,服务器程序池还是自动关闭。

 

 

相关的参考文章:

https://github.com/tjanczuk/iisnode/wiki/iisnode-releases

http://www.jb51.net/article/61569.htm

http://blog.csdn.net/puncha/article/details/9047311

http://corpus.hubwiz.com/2/node.js/30432661.html

https://www.cnblogs.com/walkerwang/archive/2013/04/11/3015765.html

IIS反向代理http://blog.csdn.net/yuanguozhengjust/article/details/23576033