我在Heroku上部署了一个Meteor应用,该应用突然崩溃。我收到的是
at=error code=H13 desc="Connection closed without response" method=GET path="/sockjs/info?cb=e2h8vk74gt" host=HOST request_id=89b5ceee-cb5e-48f2-94b9-7c2b8d833c96 fwd=IP dyno=web.1 connect=0ms service=22948ms status=503 bytes=0 protocol=https
at=error code=H12 desc="Request timeout" method=GET path="/sockjs/info?cb=lzf11s02bu" host=HOST request_id=289d7fda-27a2-470d-8ae5-c3e41c0be7d4 fwd=IP dyno=web.1 connect=0ms service=30000ms status=503 bytes=0 protocol=https
Error R14 (Memory quota exceeded)
错误。
似乎是H13错误,意味着服务器在请求“ / sockjs / inf?cb = xyz”路径时都会停止响应。我正在读这本书,因为Meteor的套接字编程失败(sockjs)。似乎'cb'参数在执行请求后进入回调。此应用程序确实发出API请求。
然后,随着服务器超时,H12可能变得有意义。
我相信R14可能与那些错误有关,因为当失败的请求不断堆积时,内存配额将被超出。
我尝试在本地重现此问题。如果应用程序无法通过Web API进行身份验证,我有时会看到H12 sockjs错误,但无法深入研究它们并查看发生了什么(它只是进入了实际的框架代码)。但是,我还没有让服务器在本地崩溃。这使我相信,使用Heroku配置可能会有所帮助。有什么见解吗?
https://imgur.com/rYzagqA是我的localhost sockjs错误的屏幕截图,在其中您可能会看到xhr请求失败。但是,我不知道如何确切地知道该请求是什么(无论是实际的API调用还是路由器在做什么)
在本地主机上,我也看到了
'与'ws:// localhost:3000 / sockjs / 394 / inx5dfkh / websocket的WebSocket连接'失败:在建立连接之前关闭WebSocket。
WebSocketTransport.doCleanup @ sockjs-0.3.4.js:1300'有人知道我该如何找出到底是什么引起的?
最佳答案
我偶尔会收到这类错误。
不确定最终的根本原因,但到目前为止发现了一些见解:
流星在30秒后超时请求。如果您有一些需要比回答更长的时间的请求,它将杀死它并扔出H12。实际上,待处理的请求会堆积起来,您可能会在系统资源上遇到“过载”。
通过使用不同的环境,我已经能够确定与Mongo DB(在我的情况下为远程)的连接会有所不同。登台和生产中的相同代码在登台中效果很好,而在生产中则表现不佳。如果我将暂存环境指向产品数据库,则会开始出现流星延迟应答。
检查websocket流量,我已经看到在生产数据库下,订阅/取消订阅的速度要慢很多。并且直到这些完成为止,“请求”(例如,方法调用)将不会在服务器中被调用。
这几乎就是我现在站着的地方。不知道为什么生产数据库与生产一个免费的实例数据库相比,生产数据库会提倡较慢的行为。
关于javascript - meteor 应用sockjs连接在Heroku上关闭,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58614863/