node.js - Express/NodeJS + Mongoose App 服务器响应慢

标签 node.js mongodb express mongoose keystonejs

问题

我有一个 Express (Node.JS) + MongoDB 应用程序,服务器响应加载时间平均为 4 - 7 秒(慢)。

据我了解,根据 google pagespeed tools,平均服务器响应时间低于 200 毫秒。 .

此应用程序从 mongoDB 异步获取数据,但到数据库的往返时间非常慢,每次调用平均约为 500 毫秒 - 1 秒。这些调用是简单的 findAll 调用,用于检索少于 < 100 条记录的数据。

上下文

  • Mongoose 版本:4.13.14
  • 数据库服务器的 MongoDB 版本为 3.4.16
  • 数据库服务器托管在 AWS/Oregon (us-west-1) 的 MongoDB Atlas M10 上
  • Web 服务器托管在 SFO1 (us-west-1) 中的 now.sh
  • 已按照 MongoDB Atlas 的性能顾问的建议执行推荐的索引
  • 在本地环境(本地服务器 + 本地数据库)中完美获取数据,因为在几毫秒内查询数据
  • 可以在此 gist 中找到受影响页面的 Mongoose 日志。

Mongo 服务器配置

  • 蒙古阿特拉斯 M10
  • 2GB 内存
  • 10 GB 存储空间
  • 100 IOPS
  • 加密
  • 自动扩展存储

尝试的解决方案:

我检查了我的数据库指标,它们看起来不错。也没有慢查询。这些是简单的 findAll 查询。 mongo atlas 上的性能顾问报告没有任何异常。

生产应用程序和数据库都托管在同一区域中。

我已经尝试通过运行 .lean() 优化查询的应用层( Mongoose )

问题:

我还应该从哪里改善数据库延迟?一个简单的查询怎么会花这么长时间?否则,为什么我的服务器响应时间在预期为 200 毫秒左右时却需要 4 秒?

最佳答案

您可以尝试在同一区域托管您的服务器和数据库。我认为在这种情况下网络会产生开销。如果服务器和数据库在同一个区域,它们在同一个网络上,这将大大减少延迟。有一个关于这个的aws图表 enter image description here

关于node.js - Express/NodeJS + Mongoose App 服务器响应慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51801978/

相关文章:

javascript - 使用 php 的实时功能

linux - Mongo 报告 AWS 上空间不足

node.js - 无法使用 Heroku 的环境变量连接到 MongoDB

node.js - 用户权限 - 在 View 中显示编辑(快速、 Handlebars )

node.js - Cloudant NodeJS 出现意外 `server_admin required` 错误

javascript - Express js路由返回404

node.js - 如何在 Node 中的 MongoDB 中使用 findOneAndUpdate

ruby-on-rails - Papaerclip 不适用于更新方法

javascript - 获取与父字段一起分配的所有文档

node.js - 文件中的多个 Mongoose 模式不起作用