gpt4 book ai didi

javascript - Node.js:如何确定服务器挂起的原因

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

我最近开始注意到我的 Node.js 应用服务器在多次请求后挂起。经过更多调查后,我将其范围缩小到一个特定的终点。对该端点进行大约 30 次点击后,服务器停止响应并且请求开始超时。

总之,在每次请求时,客户端都会上传一个文件,服务器会进行一些初步检查,创建一个新的处理作业,然后使用bull将其放入队列中。 ,并向客户端返回响应。然后服务器继续处理队列中的作业。作业流程涉及从 Redis 检索作业数据。数据库,客户端打开 WebSocket 连接来检查作业状态,服务器在作业完成后写入数据库。我知道其中任何一件事都可能导致挂断。

没有抛出或记录任何错误或异常。我所看到的是请求开始超时。我正在使用 Node 检查器来尝试找出导致挂起的原因,但不确定要查找什么。

我的问题是,有没有办法使用调试器或其他方式来确定挂起的根本原因,以找出太多 ABC实例已创建,或过多 XYZ连接已打开。

最佳答案

在本例中,这实际上并不是 Node.js 特定的问题。我在一个代码路径中泄漏了数据库连接。我经历了惨痛的教训,如果你耗尽数据库连接,你的 Node 服务器将停止响应。请求似乎挂起。

至少在 Postgres 上追踪这个问题的一个好方法是运行查询:

SELECT * FROM pg_stat_activity

其中列出了所有打开的数据库连接,以及上次在该连接上运行的查询。然后您可以检查代码以了解调用该查询的位置,这对于跟踪泄漏非常有帮助。

关于javascript - Node.js:如何确定服务器挂起的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42307100/

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