firebase - 在只有两个用户的测试环境中达到 100 个活动连接限制
问题描述
我有一个 Web 客户端和一些使用 Admin SDK 的 Lambda 函数。我最近注意到我已经达到了 100 个同时连接的限制,但我真的不应该接近这个限制。此外,即使在函数完成后,我的 Lamba 函数建立的连接似乎也没有断开。
任何想法:
- 我怎样才能防止这种连接上的加速发生?
- 如何释放过去 Lambda 脚本建立的连接?
- 如何监控哪些进程/线程/堆栈正在保持连接?
注意:这是我正在使用的测试环境,因此我更愿意将其保留在免费层中,并且我的要求绝对不应该达到 100 个活动限制。我在生产中的付费计划。
我试图initializeApp
通过使用以下连接代码来避免多次调用。在我正在谈论的示例中,我只有一个数据库作为后端,因此每次都使用DEFAULT的默认“名称”。
const runningApps = new Set(firebase.apps.map(i => i.name));
this.app = runningApps.has(name)
? firebase.app()
: firebase.initializeApp({
credential: firebase.credential.cert(serviceAccount),
databaseURL: config.databaseUrl
});
我现在正在尝试显式关闭与的连接,goOffline
但这会导致另一个问题,即在第二个连接上 - 也就是已经设置了 DEFAULT 应用程序并且它只是重用了已经建立的连接我得到以下日志记录:
# Generated as result of `goOnline`
Connecting to Firebase: [https://xyz.firebaseio.com]
appears to be already connected
# Listening on ".info/connected" comes back as true, resulting in:
AbstractedAdmin: connected to [DEFAULT]
# but then I get this error
NotAllowed: You must first connect before using the database() API at Object._getFirebaseType
解决方案
您对数据库有意外的传入连接这一事实使陈旧的实例看起来像是保持打开的连接。
goOffline()
我能想到的最好的方法是在完成显式断开之前调用您的函数。这也可能意味着您必须goOnline
在函数开始时调用,因为它可能在之前离线的实例上运行。两者goOnline
和goOffline
都是同步调用 afaik,但在上线和数据在您的应用程序中可用之间肯定会有一段时间。
如果 Lambda 有办法让您检测其实例的生命周期事件,那将是调用goOffline
和goOnline
.
推荐阅读
- c++ - 基本数组功能难点
- powershell - 将多个文件名中每个单词的首字母大写(Powershell)
- git - ADo 存储库:推送被拒绝,因为提交包含与策略指定模式不匹配的作者电子邮件
- c++ - 关于 Stroustrup 的书例中模板的 value_type 使用问题
- css - 如何用css精确填充剩余的垂直空间
- svg - 如何根据 CSS 确定 SVG 元素的实际属性
- html - 可以将 Img srcset 转换为背景图像吗?
- javascript - 如果已经运行 JS,如何防止 HTML 按钮点击
- spring - ActiveDirectoryLdapAuthenticationProvider 和使用 userDetailsService 的身份验证
- javascript - 如何在浏览器中使用自定义但部分支持的 MimeType 播放数据流?