Gun*_*nis 5 azure-database-postgresql
我遇到 Azure PostGreSQL-PaaS 性能不佳的情况,需要有关如何继续的帮助。
我正在一个项目中试用 Azure PostGreSQL-PaaS。我遇到了数据库无法忍受的性能(或者至少看起来数据库是问题所在)。
我们的应用程序在 Azure-VM 中运行,VM 和数据库都位于西欧。VM 和数据库之间的网络似乎运行正常。(在数据库端口 5432 上使用 psping(来自 Sysinternals)我得到 2 毫秒和 4 毫秒之间的延迟)PostGreSQL 包含一个名为 pgbench 的基准测试工具。该工具在测试数据集上运行一系列简单的 sql 语句并提供计时。我在 VM 上针对数据库运行了 pgbench。Pgbench 报告的延迟在 800 毫秒到 1600 毫秒之间。如果我在本地网络上对内部数据库使用 pgbench 进行相同的测试,我通常会得到低于 10 毫秒的延迟。
我试图就此联系 Microsoft 支持,但我基本上被告知,由于网络似乎运行正常,这一定是 PostGreSQL 软件问题,与 Microsoft 无关。由于数据库是 PostGreSQL-Paas,我只能有限地访问日志和指标。
任何人都可以请帮助或建议我如何继续吗?
我遇到过同样的问题。我们从运行 PostgreSQL 的专用 VM(Ubuntu、大小标准 B2s 2 vcpu、4 GiB 内存、~35\xe2\x82\xac pm)迁移到 Azure 托管 PostgreSQL 实例(通用、单服务器、2vcpu、10GB 内存、~ 130\xe2\x82\xac 下午)。
\n当我们的 Web 应用程序的主要 API 请求突然需要 3 秒而不是 1.7 秒/2 秒时,我第一次注意到性能不佳。
\n我使用专用虚拟机在旧设置上运行了一些非常简单的计时测试:
\nselect count(*) from mytable;\n count\n-------\n 4686\nTime: 0.940 ms\nRun Code Online (Sandbox Code Playgroud)\n这些是 Azure 托管 PostgreSQL 的新设置的时间安排:
\nselect count(*) from mytable;\n count\n-------\n 4686\nTime: 21,353 ms\nRun Code Online (Sandbox Code Playgroud)\n我想我不需要解释这些数字:)
\n我创建了一个支持票证,并得到了一些见解:
\n“在 Azure PostgreSQL 单服务器中,我们有一个网关来管理和路由连接,并且始终有 3 个数据副本以确保您的数据不会丢失,而所有这些都会造成延迟。 ”\n
我还问托管数据库有什么好处:
\n答:作为在 azure 上运行的实例,您\xe2\x80\x99 可以受益于:
\n-自动打补丁,您的实例自动升级。
\n-崩溃恢复,如果我们的系统检测到实例未运行,它会尝试重新启动/切换到新主机。如果这一切都失败,则会激活值班工程师来手动恢复实例。
\n-自动备份和一键时间点恢复。\n-数据冗余。”
他们建议我从单一服务器切换到灵活服务器,其中网关被抛弃,性能显然应该更好,但不如托管实例:
\n“在我们进行的多项测试中,xe2\x80\x99 的性能比单服务器要好得多。但是要设置正确的期望,您将无法获得与在专用虚拟机中运行 PostgreSQL 一样的 1 比 1 的性能。 ”
\n我询问了这些测试的结果,一旦得到,我会立即将其发布在这里。
\n我认为您必须决定上述好处是否如此之高以至于您愿意支付比专用虚拟机至少多 4 倍的费用,以及您是否可以忍受较差的性能。现在,我们将切换回具有 2 个专用虚拟机的主/从配置。
\n小智 4
Azure PostgreSQL PaaS 产品的性能取决于不同的服务器和客户端配置,包括随存储 IOPS 一起预配的 SKU。Microsoft 工程部门发布了一系列性能博客,帮助客户根据其工作负载遵循这些步骤来获得可衡量的经验收益。请查看这些博客文章:
您的内部 Postgres 设置是否与 Azure 中的设置类似?
| 归档时间: |
|
| 查看次数: |
2376 次 |
| 最近记录: |