我正在使用 Chalice 框架在 python 中创建基于 lambda 的 Web 服务。目标是连接到 MS SqlServer(AWS RDS 服务)的托管实例以使用 pyodbc 获取数据。
在一个特定的部分,我需要连续进行大约 80 个查询,并开始注意到令人讨厌的性能下降,但只有当项目在本地运行时。 当我的项目部署时,lambda 位于 RDS 实例的同一 VPC 内,使用 time.time() 函数简单测量经过的时间表明查询时间总和 (cursor.execute) 约为 800ms ,而所有 fetch (cur.fetchall()) 的总和约为 40ms。 Web 服务器在大约 秒 内回复客户端。
如果我在本地计算机上安装的 SQLServer Management Studio 中运行完全相同的 80 个查询,我或多或少会获得 相同的性能。 SSMS 比 lambda 更快,但它不需要构建 JSON 响应,差异在 150/200ms 以内(完全可以接受)
但是,当我在本地启动 Chalice 的开发服务器时,获取速度最多慢 5 倍,仅在 cursor.execute() 阶段就达到了 4000ms。总结所有查询和提取,网络服务器在 7000ms
内回复客户端本地 SSMS 速度很快(即使它使用与 ODBC 不同的驱动程序)这一事实让我认为问题与网络连接不良无关。 此外,部署的代码应该与在我的机器上运行的代码相同。
如何检查这个问题并找出可能的原因?
感谢所有建议。