7

我遇到 Azure PostGreSQL-PaaS 的性能不佳,需要有关如何继续的帮助。

我正在一个项目中试用 Azure PostGreSQL-PaaS。我遇到了数据库无法忍受的性能(或者至少看起来数据库是问题所在)。

我们的应用程序在 Azure-VM 中运行,VM 和数据库都位于西欧。虚拟机和数据库之间的网络似乎运行良好。(在数据库端口 5432 上使用 psping(来自 Sysinternals)我得到 2 毫秒到 4 毫秒之间的延迟) PostGreSQL 包含一个名为 pgbench 的基准测试工具。该工具在测试数据集上运行一系列简单的 sql 语句并提供计时。我在 VM 上针对数据库运行 pgbench。Pgbench 报告延迟在 800 毫秒到 1600 毫秒之间。如果我在本地网络上对内部数据库使用 pgbench 内部进行相同的测试,我通常会得到低于 10 毫秒的延迟。

我试图就此联系 Microsoft 支持,但我基本上被告知,由于网络似乎运行良好,这一定是 PostGreSQL 软件问题,与 Microsoft 无关。由于数据库是 PostGreSQL-Paas,我只能有限地访问日志和指标。

任何人都可以帮助或建议我如何进行此操作吗?

4

2 回答 2

4

Azure PostgreSQL PaaS 产品的性能取决于不同的服务器和客户端配置,包括与存储 IOPS 一起预配的 SKU。Microsoft 工程部门发布了一系列性能博客,可帮助客户根据工作负载执行这些步骤,从而获得可衡量的经验收益。请查看这些博客文章:

Azure PostgreSQL 的性能最佳实践

Azure PostgreSQL 的性能调优

Azure PostgreSQL 的性能快速提示

您的内部 Postgres 设置是否类似于 Azure 中的设置?

于 2019-02-25T22:06:11.190 回答
1

我遇到过同样的问题。我们从运行 PostgreSQL 的专用 VM(Ubuntu,大小标准 B2s 2 vcpus,4 GiB 内存,约 35 欧元 pm )迁移到 Azure 托管 PostgreSQL 实例(通用型,单服务器,2vcpus,10GB 内存,约 130 欧元 pm )。

当我们的 web 应用程序的主要 API 请求突然需要 3s 而不是 1.7s / 2s 时,我首先注意到性能不佳。

我使用专用 VM 在旧设置上运行了一些非常简单的计时测试:

select count(*) from mytable;
 count
-------
  4686
Time: 0.940 ms

这些是使用 Azure 托管 PostgreSQL 进行新设置的时间安排:

select count(*) from mytable;
 count
-------
  4686
Time: 21,353 ms

我想我不必解释这些数字:)

我创建了一张支持票,并获得了一些见解:

"在 Azure PostgreSQL 单服务器中,我们有一个网关来管理和路由连接,并且始终有 3 个数据副本以确保您的数据不会丢失,所有这些都会产生延迟。 " 在此处输入图像描述

我还问了托管数据库有什么好处:

答:作为在 azure 上运行的实例,您将受益于:

- 自动打补丁,您的实例会自动升级。
-崩溃恢复,如果我们的系统检测到实例没有运行,它会尝试重新启动/切换到新主机。如果这一切都失败了,则会激活 oncall 工程师来手动恢复实例。
- 自动备份和一键还原。- 数据冗余。
"

他们建议我从单服务器切换到灵活服务器,在该服务器上放弃了网关,性能显然应该更好,但不如托管实例:

在我们进行的几项测试中,与单服务器相比,性能要好得多。但要设置正确的预期操作,您将无法获得 1 比 1 的性能,因为 PostgreSQL 在专用虚拟机中运行。

我询问了这些测试的结果,我一得到它们就会在这里发布。

我认为您必须确定上述好处是否如此之高以至于您愿意支付至少 4 倍于专用 VM 的费用,以及您是否可以忍受更差的性能。我们现在将切换回具有 2 个专用 VM 的主/从配置。

于 2021-10-23T09:43:44.540 回答