我有一个在AWS Lambda上运行的C#后端。它连接到同一区域中的PostgreSQL数据库。
添加数据库连接代码后,我发现冷启动执行时间非常慢。为我的Lambda函数分配更多的内存后,执行时间显着减少。
由Lambda控制台测量的执行时间:
相反,在注释掉数据库连接代码之后:
因此,打开数据库连接为执行时间做出了很大贡献。
根据AWS文档:
在AWS Lambda资源模型中,选择您要使用的内存量 需要您的功能,并按比例分配CPU功率, 其他资源。
由于峰值内存使用量一直保持在〜45 MB,因此这种现象似乎表明数据库连接的建立是一项计算密集型活动。如果是这样,为什么?
有问题的代码(我正在使用Npgsql):
<PaginationTable />
更新1
我用相同的配置设置了MariaDB实例,并进行了一些测试。
使用MySql.Data进行同步操作:
使用MySqlConnector进行异步操作:
有趣的是,我的笔记本电脑上的执行时间从〜4秒(对于Npgsql)增加到12〜15秒(对于MySql.Data和MySqlConnector)。
在这一点上,我将为Lambda函数分配更多的内存以解决此问题。但是,如果有人知道为什么建立连接需要这么长时间,我将不胜感激。我可能稍后会发布一些分析结果。