我已经查找了这个问题,但找不到有关它的足够信息。
Google Cloud Spanner客户端库自动处理会话,每个节点的限制为10.000个会话,直到此处没问题。
我有一个微服务应用程序,它也有谷歌云功能。我正在云功能上做一些特定的数据库工作,我也在不断地调用这些功能。过了一会儿,Cloud Spanner开始出错了;
Too many active sessions in database, limit is 10000. Increase the node count to allow more sessions.
我知道限制,但没有任何操作会导致我的应用超出这些限制。
在我注意到这一点后,我有两个问题,我找不到任何答案;
1-云功能是否为每次通话创建新会话? (我正在使用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) {}
在这个问题之后,我把它放在这样的范围内,并在我完成之后关闭了数据库会话;
exports.myFunction = function myFunction(req, res) {
const db = Spanner({projectId: '[my-project]'}).instance('[my-cs-instance]').database('[my-database]');
// codes
db.close();
}
没有改变任何东西,一段时间后它仍然超过了会话限制。
你有什么经历导致这种情况吗?这与Cloud Functions或Cloud Spanner本身有关吗?
2-如果每个事务对象一次使用一个连接,则在此方案中会发生什么。
我有一个除了这些云功能之外的REST端点。它在开始监听HTTP端点时创建一个数据库实例,而我不再在其生命周期中创建任何其他实例。在那个端点,我正在制作CRUD,我正在使用事务,它们都使用我在进程开始时创建的相同实例。我的经历是;
我的问题是;
提前致谢
答案 0 :(得分:0)
现在已根据#89处的问题和#91处的解决方案修复此问题,并在#71987137处记录为Google Issue Trackers。
如果问题仍然存在,请在Google issue tracker报告,然后重新审核。