AWS的IISNode上托管的MongoDB应用的高TTFB

问题描述 投票:0回答:1

开始之前,请注意我已经阅读了以下资源:

MongoDB Cloud Deployment - High TTFB

https://mongoosejs.com/docs/connections

我正在运行一个Node.js应用程序,该应用程序连接到AWS EC2实例上的Mongo数据库。 Node.js应用程序和数据库位于同一服务器上。该实例是运行IIS的Windows服务器,我使用IISNode连接到应用程序。我居住在托管EC2实例的区域附近。

我使用Mongoose连接到我的数据库。我在连接字符串中未使用localhost;我使用mongodb://127.0.0.1:27017格式。

我的T​​TFB经历了1-2秒的延迟。

是否有解决此问题的方法?这只是初始连接的正常延迟吗?

虽然我在这里,但我也可以使用一些有关MongoDB中连接和套接字如何工作的说明。如果用户连接到数据库并且连接上有套接字打开,并且来自其他IP地址的用户尝试连接到数据库,他们是否使用开放套接字?我尝试使用VPN进行测试,但不确定结果。

感谢您的帮助。

node.js mongodb amazon-web-services iisnode
1个回答
0
投票

我想出了一个可能有点破解的解决方案,但是它可行。如果有人有更好的解决方案,请随时发布。

我正在使用允许查询数据库的前端Web应用程序。我在前端应用程序中添加了一些代码,以便在页面加载时将查询发送到数据库:

$(document).ready(function() {
    var xhttp = new XMLHttpRequest();
    xhttp.open("GET", "URL-for-an-empty-record-in-your-database", true);
    xhttp.send()
})

然后,通过添加以下代码行,确保将正确的CORS标头添加到我的Node.js Express应用程序中:

app.use(function (req, res, next) {
  res.setHeader('Access-Control-Allow-Origin', 'my-frontend-application-url');
  res.setHeader('Access-Control-Allow-Methods', 'GET');
  next();
});

之所以包含以上代码,是因为我以前一直使用JSONP向我的Node.js应用程序发出请求,并且当我切换到XHR请求时,需要包含标头。我注意到我的请求被回复的速度大大提高了。以前,一个请求平均需要300毫秒到400毫秒才能返回,而现在,它们的返回时间大约是50毫秒到80毫秒。我还注意到,初始连接的时间减少到600ms至800ms。以前是1到2秒。因为我使用Lambda函数,所以在前端应用程序加载时,初始请求也将开始冷启动(如果尚未预热)。

© www.soinside.com 2019 - 2024. All rights reserved.