当代码在本地运行时,Pyodbc 从 AWS RDS 获取数据的速度要慢 5 到 7 倍

问题描述 投票:0回答:0

我正在使用 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 不同的驱动程序)这一事实让我认为问题与网络连接不良无关。 此外,部署的代码应该与在我的机器上运行的代码相同。

如何检查这个问题并找出可能的原因?

感谢所有建议。

python sql-server aws-lambda amazon-rds pyodbc
© www.soinside.com 2019 - 2024. All rights reserved.