为什么PostgreSQL连接建立会受到CPU限制

时间:2018-10-27 15:22:57

标签: postgresql aws-lambda

我有一个在AWS Lambda上运行的C#后端。它连接到同一区域中的PostgreSQL数据库。

添加数据库连接代码后,我发现冷启动执行时间非常慢。为我的Lambda函数分配更多的内存后,执行时间显着减少。

由Lambda控制台测量的执行时间:

  • 128 MB(〜15.5秒)
  • 256 MB(〜9秒)
  • 384 MB(〜6秒)
  • 512 MB(〜4.5秒)
  • 640 MB(〜3.5秒)
  • 768 MB(〜3秒)

相反,在注释掉数据库连接代码之后:

  • 128 MB(〜5秒)
  • 256 MB(〜2.5秒)

因此,打开数据库连接为执行时间做出了很大贡献。

根据AWS文档:

  

在AWS Lambda资源模型中,选择您要使用的内存量   需要您的功能,并按比例分配CPU功率,   其他资源。

由于峰值内存使用量一直保持在〜45 MB,因此这种现象似乎表明数据库连接的建立是一项计算密集型活动。如果是这样,为什么?

有问题的代码(我正在使用Npgsql):

<PaginationTable />

更新1

我用相同的配置设置了MariaDB实例,并进行了一些测试。

使用MySql.Data进行同步操作:

  • 128 MB(〜12.5秒)
  • 256 MB(〜6.5秒)

使用MySqlConnector进行异步操作:

  • 128 MB(〜11秒)
  • 256 MB(〜5秒)

有趣的是,我的笔记本电脑上的执行时间从〜4秒(对于Npgsql)增加到12〜15秒(对于MySql.Data和MySqlConnector)。

在这一点上,我将为Lambda函数分配更多的内存以解决此问题。但是,如果有人知道为什么建立连接需要这么长时间,我将不胜感激。我可能稍后会发布一些分析结果。

0 个答案:

没有答案