Express/NodeJS + Mongoose App服务器响应缓慢

clo*_*dal 8 mongoose mongodb node.js express keystonejs

问题

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

据我所知,根据google pagespeed工具,平均服务器响应时间不到200毫秒.

这个应用程序异步获取mongoDB中的数据,但到数据库的往返时间非常慢,每次调用平均大约500ms - 1s.这些调用是简单的findAll调用,用于检索少于<100条记录的数据.

上下文

  • 猫鼬版:4.13.14
  • DB服务器的MongoDB版本是3.4.16
  • 数据库服务器托管在AWS/Oregon(us-west-1)的MongoDB Atlas M10上
  • Web服务器在SFO1(us-west-1)中使用now.sh托管
  • 按照MongoDB Atlas的绩效顾问的建议,执行了推荐的索引
  • 数据在本地环境(本地服务器+本地数据库)中完全正常,因为数据在几毫秒内被查询
  • 可以在此要点中找到受影响页面的Mongoose日志

Mongo Server配置

  • Mongo Atlas M10
  • 2GB Ram
  • 10 GB存储
  • 100 IOPS
  • 加密
  • 自动扩展存储

尝试的解决方案:

我检查了我的数据库指标,看起来很好.也没有缓慢的查询.这些是简单的findAll查询.mongo atlas的绩效顾问报告没什么异常.

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

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

题:

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

小智 0

我用我在硕士学位期间开发的应用程序添加了一些像您一样的问题。我添加了一个在线运行的 Node.js api,以便在课堂上展示它。我意识到,每次我想在 api 中进行调用时,响应都会花费大量时间。我意识到问题之一是学校网络的防火墙。另外,我放置服务器 heroku.com 的地方也出现了一些延迟。我所做的是使用Redis(https://redis.io/)来提高性能,而且heroku也给我带来了一些问题,因为请求是http而不是https。

\n\n

在本地主机上运行应用程序和数据进行测试并查看性能。如果您没有\xc2\xb4t 有任何问题,请尝试检查是否没有任何东西干扰您的请求,例如您托管节点服务器的位置。

\n\n

如果这有帮助或者您仍然遇到问题,请告诉我,以便我可以更好地帮助您。

\n