【发布时间】:2015-04-04 20:56:31
【问题描述】:
我的app 是在heroku 的服务器上使用ExpressJS、AngularJS 和socket.io 构建的。
最初,我的客户不断与heroku 的H12 error code 断开连接。我认为我的进程运行时间过长,但我听从了它的建议,将 socket.io 的 ping 间隔减少到 10 秒,将 ping 超时减少到 25 秒。进行此更改后,我的断开连接的频率降低了。
即使服务器仅支持 4-5 个客户端,断开连接仍然会发生。我的应用程序是一个简单的扑克牌游戏,我相信它不需要大量计算。同时,断开连接是非常不可取的,因为它是一个实时游戏。我还使用 CDN 和 AWS Cloudfront 处理了大多数静态资产。因此,我想知道我是否应该升级 Heroku Dyno 的 CPU,或者是否还需要增加 Dynos 的数量。
我是否需要对我的 socket.io 进行更多配置调整,例如 pingintervals 和 pingtimeouts。或者我应该在 Heroku 上升级/超越我的 Dynos?对不起,我对服务器优化的了解不多。非常感谢您的帮助!
以下是正常 ping 间隔的日志,其中没有发生任何事件。在这种情况下,根本不应该进行任何深度处理,但如日志所示,GET 方法大约需要 12 秒(Heroku 将在 30 秒时断开连接)。
2015-02-05T09:08:59.637350+00:00 heroku[路由器]: 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-02-05T09:09:12.074210+00:00 heroku[路由器]: at=info method=GET path="/socket.io/?EIO=3&transport=polling&t=1423127340438-25&sid=_5fURAV8_Gn5736HAAAC" host= daidi.herokuapp.com request_id=b54dedb6-1733-414a-8fd3-b8d8fd1f4516 fwd="42.60.78.220" dyno=web.1 connect=1ms service=12008ms status=200 bytes=207
【问题讨论】:
-
我遇到了完全相同的问题
标签: node.js heroku websocket socket.io scaling