我的应用程序是使用ExpressJS、AngularJS和socket.io在Heroku服务器上构建的。
最初,我的客户端一直遇到Heroku的H12错误代码而断开连接。我认为我的进程运行时间过长,但我按照它的建议将socket.io的ping间隔减小到10秒,并将ping超时时间减小到25秒。在进行此更改后,我的断开连接发生的频率较少。
即使服务器只支持4-5个客户端,仍然会发生断开连接。我的应用程序是一个简单的扑克牌游戏,我认为不需要强大的计算能力。同时,由于它是实时游戏,因此断开连接是非常不希望的。我还使用AWS CloudFront的CDN处理了大部分静态资产。因此,我想知道是否应该升级我的Heroku Dyno的CPU或者是否有必要增加Dyno的数量。
我是否需要在我的socket.io上进行更多的配置调整,例如ping间隔和ping超时时间。或者我应该在Heroku上升级/扩展我的Dynos?对于服务器优化我了解甚少,请提前谅解。非常感谢您的帮助!
以下是正常ping间隔的LOG,其中没有任何事件发生。在这种情况下,不应该进行任何深度处理,但是如日志所示,GET方法大约花费了12秒(当连接时间达到30秒时,Heroku将中断连接)。2015-02-05T09:08:59.637350+00:00 heroku[router]: at=info method=POST path="/socket.io/?EIO=3&transport=polling&t=1423127340014-73&sid=MOLTkQP1knsflhZ3AAAB" host=daidi.herokuapp.com request_id=8faf8459-dfb3-4c3b-a7e2-6528c0ab9850 fwd="42.60.78.220" dyno=web.1 connect=2ms service=3ms status=200 bytes=255
2015年2月5日09:09:12.074210+00:00 heroku[router]: 信息:使用GET方法访问路径“/socket.io/?EIO=3&transport=polling&t=1423127340438-25&sid=_5fURAV8_Gn5736HAAAC”,主机为daidi.herokuapp.com,请求ID为b54dedb6-1733-414a-8fd3-b8d8fd1f4516,转发地址为42.60.78.220,动态网页为web.1,连接时间为1毫秒,服务时间为12008毫秒,状态码为200,字节数为207。