javascript - Cloud Spanner 无法正确管理 session 吗?

标签 javascript node.js google-cloud-platform google-cloud-functions google-cloud-spanner

我已经查找过这个问题,但找不到任何足够的信息。

Google Cloud Spanner 客户端库会自动处理 session ,每个 Node 的限制为 10.000 个 session ,到此为止都没有问题。

我有一个微服务应用程序,它也具有 Google Cloud Functions。我正在云函数上执行一些特定的数据库作业,并且我还不断调用这些函数。过了一会儿,Cloud Spanner 开始抛出错误;

Too many active sessions in database, limit is 10000. Increase the node count to allow more sessions.

我知道这些限制,但没有任何操作会导致我的应用超出这些限制。

注意到这一点后,我有两个问题找不到任何答案;

1- Cloud Functions 是否为每个调用创建新 session ? (我正在使用 HTTP 触发器)

这是我到目前为止所做的;

1- 这是我的云函数声明示例;

exports.myFunction = function myFunction(req, res) {}

在意识到这个问题之前,我已声明我的数据库实例超出此范围;

const db = Spanner({projectId: '[my-project]'}).instance('[my-cs-instance]').database('[my-database]');

exports.myFunction = function myFunction(req, res) {}

在这个问题之后,我把它放在这样的范围内,并在完成后关闭数据库 session ;

exports.myFunction = function myFunction(req, res) {
const db = Spanner({projectId: '[my-project]'}).instance('[my-cs-instance]').database('[my-database]');
// codes
db.close();
}

这并没有改变任何事情,一段时间后它仍然超出了 session 限制。

您有什么经验导致这种情况吗?这与 Cloud Functions 或 Cloud Spanner 本身有关吗?

2- 如果每个事务对象一次使用一个连接,在这种情况下会发生什么。

除了这些 Cloud Functions 之外,我还有一个 REST 端点。它在开始监听 HTTP 端点时创建一个数据库实例,并且我不再在其生命周期中创建任何其他实例。在该端点,我正在创建 CRUD,并且正在使用事务,它们都使用我在流程开始时创建的相同实例。我的经验是;

  • 有时,事务或其他 CRUD 操作会出现一点延迟,但这种情况并不总是发生。

我的问题是;

  • 这是因为当事务开始工作时,它是否会锁定连接并且所有其他操作都应该等到它结束?如果是这样,我应该为该端点上的事务创建独立的数据库实例吗?

提前致谢

最佳答案

此问题现已根据 #89 中打开的问题得到修复。并修复 #91 ,并记录为 #71987137Google Issue Trackers .

如果仍有任何问题,请报告 Google issue tracker他们将重新开放进行检查。

关于javascript - Cloud Spanner 无法正确管理 session 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48239730/

相关文章:

ssh - 如何以 ubuntu 用户身份通过​​ SSH 连接到 gcloud 计算实例?

javascript - 如何设计允许安全地跨域脚本编写的 javascript API?

node.js - 我可以用一个 require 语句加载多个文件吗?

javascript - 如何在同一函数中使用 res.render 和 res.redirect

javascript - 重命名谷歌云存储中的文件?

google-cloud-platform - API 网关不返回响应

javascript - 如何使用 ajax 上传文本字段和文件?

javascript - 如何选择重复的 DIV ID

javascript - 使用 show() 显示 div 时显示方法

node.js - "ER_BAD_FIELD_ERROR: Unknown column ' id ' in ' 字段列表 '"sequelize with nodejs