gpt4 book ai didi

Heroku 上的 Node.js 和 Express 以及 socket.io - H12 和 H13 错误

转载 作者:太空宇宙 更新时间:2023-11-03 22:12:04 25 4
gpt4 key购买 nike

当前正在构建一个使用 Node、Express 和 Socket.io 运行 Heroku Standard-1X dyno 的项目。该应用程序的前提相当简单:人们从客户端搜索项目(在引擎盖下存储为字典,如下所示):

    ['Item':'Coffee', 
'Id':0247508725,
'Location': 'Baker Street']

并选择它们,然后项目键值将被推送到 Node 服务器并存储在列表中。然后,其余客户端将“实时”检索该列表。客户端都是原生构建的 Swift iOS 应用

我第一次与大约 60 个用户一起运行它,所有用户同时搜索和添加项目。 Heroku 仪表板的结果非常可怕:

Heroku Dashboard

我以为我已经测试得很彻底了,我从来没有见过这么多的 H12 和 H13 错误。我的一部分认为这可能是我的服务器端代码效率低下,或者只是缺乏正确的 Node 实现来处理如此多的请求,所以我不会因为整个单线程处理而一直等待 I/O。

以下是运行以在该列表上添加项目的功能服务器端的示例:

clientSocket.on("additionToList", function(Location,Item,Id){
client.query("INSERT q_venue_list (item_name, item_id, at_location) VALUES ($1, $2, $3)",[Item,Id,Location], function(err, result) {
if(err) {
return console.error('error running insert', err);
}
io.sockets.in(Location).emit('updateList');
});
});

当房间 Location 中的客户端套接字收到 'updateList' 命令时,它们会拉取新列表。存储和检索一切工作正常,但由于某些原因,所有这些人,一切都陷入困境并且极其滞后。 我几乎不知道自己在做什么,但我只是想了解我可能在哪里出错。我无法集群,因为我只能访问一个核心,所以下一个最佳选择是探索异步吗?难道是设备信号太糟糕,加上等待 I/O 导致所有超时?

我只是想了解这一点,非常感谢任何帮助。如果我可以提供更多信息,请告诉我。

最佳答案

对于任何遇到此线程并遇到此类奇怪问题的人,我最终弄清楚了问题所在。我没有在 applicationDidEnterBackgroundapplicationWillResignActive 上释放套接字层并断开连接 (socket.disconnect)。这导致后端的套接字等待超时(55 秒)。在它等待的整个过程中,它使事件循环的其余部分陷入困境;因此,其他传入请求将等待,然后它们也会超时。

tl;dr:勤于打开和关闭套接字。当用户退出应用程序时,不要忘记关闭它们。

关于Heroku 上的 Node.js 和 Express 以及 socket.io - H12 和 H13 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39427344/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com