IIS 对websocket长连接数有限制吗?

fengliu2012 2016-02-21 01:32:44
我写了个网站,.net的,一个页面用到了Websocket,实时聊天那种,部署到IIS运行时,只要打开2个这个页面,然后整个网站就都锁死了,新打开的页面都一直在加载中,只要把那2个已经打开的页面关闭,新页面立刻就刷出来了!把vs附加到IIS进程调试时,打开第三个新页面,程序根本就不会进入我的代码,也就是请求被IIS截住了!
如果把这个页面中的长连接部分去除,那么无论打开多少这个页面,都不会导致整个站点锁定!
在vs2013中调试时没有这个情况!
...全文
2278 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
gangAndgang 2020-03-12
  • 打赏
  • 举报
回复
引用 12 楼 ajingmiao 的回复:
[quote=引用 9 楼 wq8438 的回复:]
[quote=引用 3 楼 sp1234 的回复:]
你应该检查一下(调试一下)你的 http 通讯,看看有没有异常巨大的消息。在websocket 通讯时,你的 http 通讯应该是“不动的”。

asp.net 之前应该是弄了一个“伪websocket”,也就是说它会自动地使用 http 长连接来模拟 websocket,而不是真正 websocket。不知道你是否使用了过时的、伪 websocket 功能的 asp.net。

你是我在csdn里面看到的最活跃的用户。。。。[/quote]

也是我见到 最傻b的 各种花式回答。。[/quote]

也是我见过的,只会嘴炮装B,从不解决问题的人
zouyu01 2020-03-12
  • 打赏
  • 举报
回复
发现是老贴:(
zouyu01 2020-03-12
  • 打赏
  • 举报
回复
别非要强迫症去去管那个IIS的发布,我们就是直接一个exe就搞定了。 SP大神说的方向基本没差的,web开发和websocket协议两者没啥密切关系,不需要iis websocket一样运行。
派大奇 2020-03-12
  • 打赏
  • 举报
回复
引用 13 楼 by_封爱 的回复:
iis里的websocket的确有很多问题 基本上 也没有人实际应用... 而且写到什么网页里 我也没见过有人这么干过. 不会写winservice 最起码的 你写一个exe 也行啊.. 网上一大堆类库 几句话就搞定3个事件... 或者找一个tcp服务的dll 在看下websocket协议 兼容一下... 这种东西很多的. 我觉得你先从这地方下手 比较合适. 而不是去研究什么iis上的websocket..
以前单位的 技术经理 在 socket 上非常弱 一直都没有突破 就成了他内心的一块阴影了 只要一到开发关于通讯的功能他总想 绕开socket 寻找其他方式 包括 websocket 之类的 那会 真是笑死我了......... 后来我离职了
by_封爱 版主 2020-02-19
  • 打赏
  • 举报
回复
iis里的websocket的确有很多问题 基本上 也没有人实际应用... 而且写到什么网页里 我也没见过有人这么干过. 不会写winservice 最起码的 你写一个exe 也行啊.. 网上一大堆类库 几句话就搞定3个事件... 或者找一个tcp服务的dll 在看下websocket协议 兼容一下... 这种东西很多的. 我觉得你先从这地方下手 比较合适. 而不是去研究什么iis上的websocket..
ajingmiao 2020-02-18
  • 打赏
  • 举报
回复
引用 9 楼 wq8438 的回复:
[quote=引用 3 楼 sp1234 的回复:] 你应该检查一下(调试一下)你的 http 通讯,看看有没有异常巨大的消息。在websocket 通讯时,你的 http 通讯应该是“不动的”。 asp.net 之前应该是弄了一个“伪websocket”,也就是说它会自动地使用 http 长连接来模拟 websocket,而不是真正 websocket。不知道你是否使用了过时的、伪 websocket 功能的 asp.net。
你是我在csdn里面看到的最活跃的用户。。。。[/quote] 也是我见到 最傻b的 各种花式回答。。
w_hair 2017-03-21
  • 打赏
  • 举报
回复
楼猪问题解决了吗?我也遇到这个问题……当前建立链接页多刷新个5、6次……iis的cpu占用率就直线上升打不开页面了……
backbone 2016-08-22
  • 打赏
  • 举报
回复
.NET下的websockt 需要IIS8以上才行! IE浏览器默认连接数8个左右,其他浏览器无限制。我做的基于websocket云客服已经上线。有问题,可以交流!
wq8438 2016-08-19
  • 打赏
  • 举报
回复
引用 3 楼 sp1234 的回复:
你应该检查一下(调试一下)你的 http 通讯,看看有没有异常巨大的消息。在websocket 通讯时,你的 http 通讯应该是“不动的”。 asp.net 之前应该是弄了一个“伪websocket”,也就是说它会自动地使用 http 长连接来模拟 websocket,而不是真正 websocket。不知道你是否使用了过时的、伪 websocket 功能的 asp.net。
你是我在csdn里面看到的最活跃的用户。。。。
tboger 2016-03-25
  • 打赏
  • 举报
回复
问题解决了吗? 我也遇到和你一样的问题了,Websocket部署在iis里面,多访问几次就网站锁死了。
fengliu2012 2016-02-21
  • 打赏
  • 举报
回复
看了sp1234的回复,我弄了个纯粹只有一个html页面,一个ashx页面的项目,就是避免上面说的本身代码有问题 代码完全粘贴自 http://www.cnblogs.com/langu/archive/2013/12/22/3485676.html,无改动 发现还是一样,只要放到IIS, 打开第一个页面,能建立长连接,再打开第二个页面,不能建立长连接,再打开第三个页面(页面打不开)...!
fengliu2012 2016-02-21
  • 打赏
  • 举报
回复
引用 2 楼 sp1234 的回复:
不知道你所谓的 websocket 具体是什么。 websocket 本身不走 IIS,它跟 http 长连接最大的不同,就是它根本不坑 IIS、也不坑浏览器端 http 并发数。它单独走 tcp 协议去访问websocket 服务器。同时 websocket 信令也比传统的基于 http 的信令要小数倍。 你所谓的“部署到IIS运行时”,我不知道你部署了什么网站。你应该仔细看看你的代码,看看有没有逻辑设计 bug。 比如说使用开源 .net 类库 Fleck 的 websocket,就是它的网页 https://github.com/statianzo/Fleck 这样几行代码,你用一个 console 程序执行这几行代码,然后就能用几百个网页客户端去测试它。并不需要IIS。 那么你使用 IIS 的服务器程序,我不知道你是不是写得过于复杂了。反而“死掉”了。
我就用的.net里自带的Websocket功能,httphandler 中判断请求是不是WebSocket,然后建立长连接 if (context.IsWebSocketRequest) { .... context.AcceptWebSocketRequest(skt.ProcessChat); ...... public async Task ProcessChat(AspNetWebSocketContext context) { 关键是,它在vs里调试的时候一点问题都没有啊
fengliu2012 2016-02-21
  • 打赏
  • 举报
回复
现在我放到阿里云服务器上又出新问题了,浏览器里报错 ebSocket connection to 'ws://m1.imilu.la/hd/groupsocket?GID=4' failed: Error during WebSocket handshake: Unexpected response code: 200 一个连接都不能建立
  • 打赏
  • 举报
回复
现在就确定,用 windows service 方式来发布 websocket 服务器端,用console 方式来测试它。不要使用 asp.net,不要使用 IIS。 这样你能在将来省许多事情。因为 websocket 服务器端编程跟 asp.net 网页编程,一点毛关系都没有。 websocket 服务端设计开发,根本不应该作为 asp.net 平台下的开发计划。 asp.net 应该用来承载前端网页,以 http 方式下载各种资源文件到浏览器。而不应该承载 websocket 服务器端。如果你曾经通过 asp.net SignalR 尝了尝鲜,那么现在应该把它从 asp.net 中彻底剥离出来。 Websocket 服务,将来是一个“大型消息服务系统”,通讯的是纯粹的自定义业务数据。而 asp.net 不过是做网页的。
  • 打赏
  • 举报
回复
你应该检查一下(调试一下)你的 http 通讯,看看有没有异常巨大的消息。在websocket 通讯时,你的 http 通讯应该是“不动的”。 asp.net 之前应该是弄了一个“伪websocket”,也就是说它会自动地使用 http 长连接来模拟 websocket,而不是真正 websocket。不知道你是否使用了过时的、伪 websocket 功能的 asp.net。
  • 打赏
  • 举报
回复
不知道你所谓的 websocket 具体是什么。 websocket 本身不走 IIS,它跟 http 长连接最大的不同,就是它根本不坑 IIS、也不坑浏览器端 http 并发数。它单独走 tcp 协议去访问websocket 服务器。同时 websocket 信令也比传统的基于 http 的信令要小数倍。 你所谓的“部署到IIS运行时”,我不知道你部署了什么网站。你应该仔细看看你的代码,看看有没有逻辑设计 bug。 比如说使用开源 .net 类库 Fleck 的 websocket,就是它的网页 https://github.com/statianzo/Fleck 这样几行代码,你用一个 console 程序执行这几行代码,然后就能用几百个网页客户端去测试它。并不需要IIS。 那么你使用 IIS 的服务器程序,我不知道你是不是写得过于复杂了。反而“死掉”了。
Poopaye 2016-02-21
  • 打赏
  • 举报
回复
非服务器版本的windows有10个入站限制

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧