【问题标题】:Why are random APIs taking too long to response in express server?为什么随机 API 在快速服务器中响应时间过长?
【发布时间】: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


    【解决方案1】:

    我假设一开始您并没有遇到这个问题,对吧? 数据增加后,您面临一个问题 并且超时发生是因为 API 没有给出响应

    根据我的上述假设,当 MongoDB 具有庞大的数据集时,您可能会遇到 MongoDB 的问题,我的建议是在您的请求超时时检查您的 MongoDB 操作,您的 MongoDB 将加载, 检查 MongoDB 进程

    db.currentOp()
    

    在 mongo shell 或任何可以运行它的编辑器中

    并检查哪个进程运行了很长时间 解决它并观看

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-10
      • 2017-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-26
      相关资源
      最近更新 更多