热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

AzureFunction创建到PostgreSQL的连接过多

如何解决《AzureFunction创建到PostgreSQL的连接过多》经验,如何解决这个问题?

我有一个Azure耐用功能,可与也托管在Azure中的PostgreSQL数据库进行交互。

PostgreSQL数据库的连接限制为50,此外,我的连接字符串将连接池的大小限制为40,从而为超级用户/管理员连接留出了空间。

尽管如此,在某些负载下我还是得到了错误

53300:剩余的连接插槽保留用于非复制超级用户连接

Microsoft的这份文档似乎很相关,但是似乎我不能制作一个静态客户端,并且正如我提到的那样,

因为您仍然可以用尽连接,所以应该优化与数据库的连接。

我有这种方法

private IDbConnection GetConnection()
{
    return new NpgsqlConnection(Environment.GetEnvironmentVariable("PostgresConnectionString"));
}

当我想与PostgreSQL交互时,我喜欢这样

using (var cOnnection= GetConnection())
{
    connection.Open();
    return await connection.QuerySingleAsync(settings.Query().Insert, settings);
}

因此,我正在创建(和布置)许多NpgsqlConnection对象,但是根据此,这应该没问题,因为连接池是在后台处理的。但是有关Azure Functions的某些信息可能会使这种想法无效。

我注意到我最终有很多空闲连接(来自pgAdmin): 基于此,我尝试摆弄Npgsql连接参数(如Connection Idle Lifetime,,Timeout和)Pooling,但连接过多的问题似乎一直持续到某种程度。另外,我尝试限制并发编排器和活动函数的数量(请参阅本文档),但这似乎在一定程度上破坏了Azure函数具有可伸缩性的目的。它确实有帮助-我得到的太多连接错误更少了。据推测,如果我继续用较小的数字进行测试,我什至可以消除它,但是,再次看来,这很不合理,并且可能还有另一种解决方案。

如何在不增加连接数的情况下将PostgreSQL与Azure函数一起使用?


推荐阅读
author-avatar
高振Andy
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有