【发布时间】:2019-01-18 23:34:56
【问题描述】:
问题
我有一个 Express (Node.JS) + MongoDB 应用程序,服务器响应加载时间平均为 4 - 7 秒(慢)。
据我了解,google pagespeed tools 的平均服务器响应时间低于 200 毫秒。
此应用程序从 mongoDB 异步获取数据,但到数据库的往返时间非常慢,每次调用平均约为 500 毫秒 - 1 秒。这些调用是简单的 findAll 调用,用于检索少于
上下文
- 猫鼬版本:4.13.14
- 数据库服务器的MongoDB版本是3.4.16
- DB 服务器托管在 AWS / Oregon (us-west-1) 的 MongoDB Atlas M10 上
- Web 服务器托管在 SFO1 (us-west-1) 中的 now.sh
- 已按照 MongoDB Atlas 的性能顾问的建议执行推荐的索引
- 在本地环境(本地服务器 + 本地 db)中数据获取非常好,因为在几毫秒内查询数据
- 可以在gist 中找到受影响页面的 Mongoose 日志
Mongo 服务器配置
- 蒙古阿特拉斯 M10
- 2GB 内存
- 10 GB 存储空间
- 100 IOPS
- 加密
- 自动扩展存储
尝试的解决方案:
我检查了我的数据库指标,它们看起来不错。也没有慢查询。这些是简单的 findAll 查询。 mongo atlas 上的性能顾问报告没有任何异常。
生产应用程序和数据库都托管在同一区域中。
我已经尝试通过运行 .lean() 优化查询的应用层(猫鼬)
问题:
我还应该从哪里改善数据库延迟?一个简单的查询怎么会花这么长时间?否则,为什么我的服务器响应时间在预期大约 200 毫秒时却需要 4 秒?
【问题讨论】:
-
您的数据库调用是否通过 ORM/驱动程序?例如猫鼬?这是我唯一能想到的
-
听起来有一些值得关注的领域,数据库为
-
@James 谢谢!我已经更新了问题
-
往返时间只有0.5 -> 1s?还有 2-3 秒等待数据库处理?
-
您可以启用调试模式并在此处发布日志吗?您还尝试过 mongo shell 直接连接到远程数据库吗?尝试 Mongo shell 时的响应时间是多少?
标签: node.js mongodb express mongoose keystonejs