javascript - Heroku 上的 Meteor 应用程序 sockjs 连接已关闭

标签 javascript debugging heroku meteor sockjs

我在 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 配置有关。有什么见解吗?

/image/gp8jk.jpg是我的 localhost sockjs 错误的屏幕截图,您可以在其中看到 xhr reqs 失败。但是,我不知道如何判断该请求到底是什么(无论是实际的 API 调用还是路由器在执行某些操作)

在本地主机上我也看到过 'WebSocket 连接到'ws://localhost:3000/sockjs/394/inx5dfkh/websocket'失败:WebSocket 在建立连接之前关闭。 WebSocketTransport.doCleanup @ sockjs-0.3.4.js:1300' 有人知道我如何找出到底是什么原因造成的吗?

最佳答案

我偶尔会遇到此类错误。

不确定最终的根本原因,但目前发现了一些见解:

  1. Meteor 在 30 秒时超时请求。如果你有一些请求需要比这个时间更长的时间来回答,它会杀死它并抛出 H12。事实上,待处理的请求将会堆积起来,您可能会遇到系统资源“过载”的情况。
  2. 通过使用不同的环境,我发现与 Mongo DB 的连接(在我的例子中是远程)会产生影响。暂存和生产中的相同代码在暂存中运行良好,但在生产中运行不佳。如果我将暂存环境指向产品数据库,我就会开始收到 Meteor 延迟响应。 检查 websocket 流量,我发现在生产数据库下,订阅/取消订阅速度变慢了很多。在这些完成之前,“请求”(例如,方法调用)不会在服务器中被调用。

这就是我现在所处的位置。不知道为什么生产数据库会促进更慢的行为,作为一个生产集群而不是一个免费的单实例数据库。

关于javascript - Heroku 上的 Meteor 应用程序 sockjs 连接已关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58614863/

相关文章:

ruby-on-rails - 一旦到达 application.scss,Heroku 就无法预编译 Assets

javascript - 无法将数据从套接字发送到特定客户端

javascript - 文件不会在 Notepad++ 中另存为 JavaScript 扩展

javascript - 如何在 Jquery 闭包中调试代码?

debugging - 如何将 Visual Studio 2010 连接到 IIS 7 以调试为现有第 3 方 Web 应用程序编写的自定义 HttpModule

windows - Qt Creator 调试

ssl - Heroku:Python Flask 应用程序——自动从 https 重定向到 http

javascript - 单击事件监听器在 OSX 的 Safari 中有效,但在 iOS 中无效

Javascript 在函数问题之外使用变量

python - 我可以在单个 heroku (python) dyno 中运行多个线程吗?