问题
我有一个 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 秒?
最佳答案
关于node.js - Express/NodeJS + Mongoose App 服务器响应慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51801978/