【发布时间】:2022-01-20 14:49:02
【问题描述】:
我们有一个运行在 express js 上的服务器,它带有一个数据库 MongoDB,它通过框架 mongoose 进行访问。该应用程序正在生产中,我们面临 API 响应时间过长的问题,有时它们甚至会超时,而且这是完全随机的,一天仅发生 10-15 个请求。我们有一个 AWS 加载器平衡器,服务器托管在 2 个实例上,MongoDB 托管在一个单独的实例上。我们已将日志放在服务器中所需的位置。首先我认为这是 TCP/IP 连接的问题,所以我在应用程序中配置了 keepAliveTimeout 和 headersTimeout (Reference),但这也没有帮助。
我尝试分析日志并发现 API 到达服务器但它在 5-10 秒内没有开始处理,有时它会在一秒钟内处理所有内容但没有响应。我什至尝试通过 apache JMeter 在 DEV 上复制该问题,但问题并未复制。我认为这可能是由于节点 js 是单线程的,但是节点 js 上运行着很多应用程序。他们如何管理这种情况?此外,我们在数据库中有数百万条记录,所以它们会产生问题吗?顺便说一句,我们已经正确地索引了这些字段。请大家帮我解决这个问题。
【问题讨论】:
标签: javascript node.js mongodb express mongoose