![](/img/trans.png)
[英]Response time from nodejs server with express on raspberry pi extremely slow
[英]Express/NodeJS + Mongoose App server response slow
我有一个Express(Node.JS)+ MongoDB应用,服务器响应加载时间平均为4-7秒(缓慢)。
据我了解,根据Google Pagespeed工具 ,平均服务器响应时间在200毫秒以下 。
这个应用程序是从mongoDB异步获取数据,但是到数据库的往返时间非常慢,每次调用平均大约500ms-1s。 这些调用是简单的findAll调用,用于检索少于100条记录的数据。
我检查了数据库指标,它们看起来不错。 也没有慢查询。 这些是简单的findAll查询。 蒙哥地图集的性能顾问认为没有异常。
生产应用程序和数据库都托管在同一区域中。
我已经尝试通过运行.lean()优化查询(猫鼬)的应用程序层
我还应该在哪里改善数据库延迟? 一个简单的查询如何花这么长时间? 否则,为什么预期的时间约为200毫秒,我的服务器响应时间最多需要4s?
我曾经使用相同的开发堆栈(mongodb,nodejs)在我的nodejs代码中遇到过同样的问题,我陷入了api迟来响应的麻烦,并且花了很多时间后才发现我的服务器是真正的罪魁祸首,然后我从heroku更改了到Amazon aws EC2实例,事情开始快速而且出奇地快,所以您的Web服务器可能是罪魁祸首
为了确保mongodb不是罪魁祸首,请编写一个api端点,您可以在其中返回一些json响应而无需对数据库进行任何查询。
我用我的硕士学位开发的应用程序给您增加了一些像您一样的问题。 我添加了一个在线运行的node.js api并将其呈现在教室中。我意识到每次我想在api中进行调用时,响应都会占用时间。 我意识到问题之一是防火墙造成的学校网络。 我放置服务器heroku.com的地方也给了一些延迟。 我所做的是使用Redis( https://redis.io/ )来提高性能,而且heroku也因为请求是http而不是https而给我带来了一些问题。
进行测试,在本地主机上运行应用程序和数据,然后查看性能。 如果您没有任何问题,请尝试检查是否没有使您的请求混乱,例如托管节点服务器的位置。
让我知道这是否有帮助,或者您仍然遇到问题,以便我可以更好地帮助您。
您也可以尝试使用Azure服务。 注册时,只需少量服务即可免费获得1年。 Azure使您可以在各个区域中部署多个实例,从而可以最大程度地减少延迟。 如果预算合适,则可以使用针对node.js + mongoDB应用程序进行了高度优化和自动管理的Web应用程序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.