springwebsocket java.io.IOException: Broken pipe

环境:springwebsocket,tomcat7,8

最近再做直播的项目,大家知道直播都有弹幕。

在技术选型的时候没多考虑,就选了springwebsocket,网上demo很多。

基本功能就是聊天。开发,测试都没啥问题,可有两次活动人数比较多,直播过程中有几个并发量很大的游戏功能,导致Broken pipe ,服务崩溃,搞的现场很尴尬。

回来开始重现,业务场景:用户进入直播间给房间每个人发送通知(XX来了),用户退出直播间给房间每个人发送通知(XX离开)。

最终发现是大量用户进入直播间和大量用户退出直播间时,有些用户退出了还给他发发消息导致。

如果用户退出不广播消息也不会出现这个问题,但是这个功能必须要有,没办法,只好研究。

这个问题非常恶心(研究了4天),是在linux下出现,Windows是报java.io.IOException: Key must be cancelled,道理都是一样的。网上案例很少,国外论坛都说是tomcat7,8的bug。

https://bz.apache.org/bugzilla/show_bug.cgi?id=57489

http://tomcat.10.x6.nabble.com/Bug-57489-New-java-util-concurrent-ExecutionException-java-io-IOException-Key-must-be-cancelled-td5028703.html

之后开始捣鼓jboss,为什么要研究jboss呢?据说jboss的并发支持很好,集群也稳定,以前也用过,很久没弄了。这东西也搞了一天,从7(好像不支持websocket)到8,然后到wildfly,最后启动成功,发现ws协议请求不到,没时间在耽误了。最终换了tomcat9,然后测试,可以暂时解决问题,服务不会挂掉,后续还要继续测试。

期间空余时间都在研究websocket方案,看来以后要换nodejs或netty。

8种websocket框架比较:

http://mp.weixin.qq.com/s?__biz=MzA5ODM5MDU3MA==&mid=2650861883&idx=1&sn=e87d99fc442314c6a55cc638c6abfda5&mpshare=1&scene=1&srcid=0223HHzJmV1Zam5jZn2pJ7z4#rd

转载于:https://my.oschina.net/u/437751/blog/845837

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值