问题
我有一个使用 Express (Node.JS) + MongoDB 的应用程序,服务器响应时间平均为 4-7 秒(较慢)。
根据Google Pagespeed 工具的说法,平均服务器响应时间低于 200ms。
该应用程序异步从 MongoDB 获取数据,但每次调用往返数据库的时间非常慢,每个调用平均约为 500ms - 1s。这些调用是简单的 findAll 调用,以检索少于 100 条记录的数据。
上下文
- Mongoose 版本:4.13.14
- DB 服务器的 MongoDB 版本为 3.4.16
- DB 服务器托管在 MongoDB Atlas M10 中,在 AWS / 俄勒冈(us-west-1)
- Web 服务器托管在 SFO1 中的 now.sh(us-west-1)
- 按照 MongoDB Atlas 的性能顾问建议执行了推荐的索引
- 在本地环境中(本地服务器+本地数据库),数据获取非常正常,因为数据在几毫秒内被查询
- 受影响页面的 Mongoose 日志可以在此 gist 中找到
Mongo 服务器配置
- Mongo Atlas M10
- 2GB 内存
- 10 GB 存储
- 100 IOPS
- 加密
- 自动扩展存储
尝试的解决方案:
我已经检查了我的数据库指标,它们看起来很好。也没有慢查询。这些都是简单的findAll查询。在mongo atlas上运行的性能顾问报告没有异常。
生产应用程序和数据库都托管在同一地区。
我已经尝试通过运行.lean()来优化查询的应用程序层(mongoose)
问题:
除此之外,我还应该在哪里寻找提高数据库延迟的方法?为什么一个简单的查询需要如此长的时间? 否则,为什么我的服务器响应时间需要达到4秒左右,而预期只有约200毫秒?