在 AWS 上的 IISNode 上托管的 MongoDB 应用程序的高 TTFB
High TTFB for MongoDB app hosted on IISNode on AWS
在开始之前请注意,我已经阅读了这些资源:
https://mongoosejs.com/docs/connections
我是 运行 一个连接到 AWS EC2 实例上的 Mongo 数据库的 Node.js 应用程序。 Node.js 应用程序和数据库在同一台服务器上。该实例是 Windows 服务器 运行 IIS,我使用 IISNode 连接到应用程序。我住在托管我的 EC2 实例的区域附近。
我使用 Mongoose 连接到我的数据库。我没有在连接字符串中使用 localhost;我使用 mongodb://127.0.0.1:27017 格式。
我的 TTFB 有 1 到 2 秒的延迟。
有办法解决这个问题吗?这只是初始连接的正常延迟吗?
虽然我在这里,但我还可以澄清一下连接和套接字在 MongoDB 中的工作方式。如果用户连接到数据库并且连接上有打开的套接字,并且来自不同 IP 地址的用户尝试连接到数据库,他们是否使用打开的套接字?我尝试使用 VPN 对此进行测试,但我不确定结果。
提前感谢您的帮助。
我想出了一个解决方案,它可能有点乱,但它确实有效。如果有人有更好的解决方案,请随时post。
我正在使用允许查询数据库的前端 Web 应用程序。我向前端应用程序添加了一些代码,以便在页面加载时将查询发送到数据库:
$(document).ready(function() {
var xhttp = new XMLHttpRequest();
xhttp.open("GET", "URL-for-an-empty-record-in-your-database", true);
xhttp.send()
})
然后我通过添加以下代码行确保将正确的 CORS headers 添加到我的 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 请求时,需要包含 headers。我注意到进行此更改后 returned 请求的速度有所提高。以前,一个请求平均需要 300 毫秒到 400 毫秒才能达到 return,而现在他们 return 大约需要 130 毫秒到 200 毫秒。我还注意到初始连接的时间下降到 600 毫秒到 800 毫秒;以前是 1 到 2 秒。因为我使用 Lambda 函数,初始请求也会在前端应用程序加载时开始冷启动(如果还没有热启动)。
在开始之前请注意,我已经阅读了这些资源:
https://mongoosejs.com/docs/connections
我是 运行 一个连接到 AWS EC2 实例上的 Mongo 数据库的 Node.js 应用程序。 Node.js 应用程序和数据库在同一台服务器上。该实例是 Windows 服务器 运行 IIS,我使用 IISNode 连接到应用程序。我住在托管我的 EC2 实例的区域附近。
我使用 Mongoose 连接到我的数据库。我没有在连接字符串中使用 localhost;我使用 mongodb://127.0.0.1:27017 格式。
我的 TTFB 有 1 到 2 秒的延迟。
有办法解决这个问题吗?这只是初始连接的正常延迟吗?
虽然我在这里,但我还可以澄清一下连接和套接字在 MongoDB 中的工作方式。如果用户连接到数据库并且连接上有打开的套接字,并且来自不同 IP 地址的用户尝试连接到数据库,他们是否使用打开的套接字?我尝试使用 VPN 对此进行测试,但我不确定结果。
提前感谢您的帮助。
我想出了一个解决方案,它可能有点乱,但它确实有效。如果有人有更好的解决方案,请随时post。
我正在使用允许查询数据库的前端 Web 应用程序。我向前端应用程序添加了一些代码,以便在页面加载时将查询发送到数据库:
$(document).ready(function() {
var xhttp = new XMLHttpRequest();
xhttp.open("GET", "URL-for-an-empty-record-in-your-database", true);
xhttp.send()
})
然后我通过添加以下代码行确保将正确的 CORS headers 添加到我的 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 请求时,需要包含 headers。我注意到进行此更改后 returned 请求的速度有所提高。以前,一个请求平均需要 300 毫秒到 400 毫秒才能达到 return,而现在他们 return 大约需要 130 毫秒到 200 毫秒。我还注意到初始连接的时间下降到 600 毫秒到 800 毫秒;以前是 1 到 2 秒。因为我使用 Lambda 函数,初始请求也会在前端应用程序加载时开始冷启动(如果还没有热启动)。