暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Azure数据库的性能故障排除基础知识

原创 CiciLee 2022-07-08
620

如果你在使用Azure Databases for PostgreSQL时遇到性能问题,这些问题通常可以通过执行基本的故障排除步骤来了解瓶颈的原因,然后探索修复它的选项来解决这些问题。

服务器级别的故障排除

1 -资源利用率:

确保您没有超出任何资源限制,达到高水平的资源利用率将导致性能问题,这可以通过在Azure Portal上监控服务器的资源利用率来避免,这是很重要的。

在Azure数据库的PostgreSQL中,资源限制是由你使用的服务层,vcore的数量和你提供的存储大小决定的。所有的这些信息都被记录在这里和这里,你可以导航到你的Azure数据库PostgreSQL,并使用Metrics Bland引擎来检查你是否超出了资源限制。

如果您的工作负载已经达到这些服务器指标的最大值,请考虑扩展资源以适应工作负载,并检查顶级查询用户并调优它们。
图片.png

2-确保使用应用端最佳业务:

a)连接池:通过重用现有连接,显著降低连接延迟,并在服务器上启用更高的数据库吞吐量(每秒事务数)。

通常,应用程序端池会打开一堆闲置在数据库上的连接。空闲应用程序在每个连接上消耗10MB的内存,还可能为建立新连接而产生争用,并降低查询速度。你可以在这里了解更多。

本质上,如果您看到大量的空闲连接,建议在适当的位置放置一个PostgreSQL特定的连接池(服务器端连接池)。我们建议使用pgbouncer来实现这一点。你可以在这里找到配置和安装pgbouncer的步骤。

b)加速组网:对虚拟机实现单根io虚拟化(SR-IOV),大大提升虚拟机的组网性能。这种高性能路径绕过了主机与数据路径,减少了延迟、抖动和CPU利用率,用于支持的VM类型上要求最高的网络工作负载。

c)使用查询缓存在Azure DB上为PostgreSQL提高读密集型工作负载的性能:Pgpool-II查询缓存,Redis缓存,Memcached是最受欢迎的外部查询缓存解决方案。

d)应用程序和数据库应该在同一个数据中心:确保应用程序和数据库服务器在同一个数据中心,以避免开销的网络延迟。

e) CPU耗尽:单线程应用程序可能导致一个CPU耗尽,而其他CPU未被充分利用。考虑将工作负载并行化,以利用所有可用的vCores。

f) TCP_NODELAY: TCP_NODELAY是一个客户端设置,应该考虑在客户端虚拟机(VM)上。受益于TCP_NODELAY选项的应用程序通常倾向于执行较小的非频繁写操作,并且对延迟特别敏感。例如,通过这个设置,延迟可以从15-40毫秒减少到2-3毫秒。

3-利用ANALYZE命令

ANALYZE收集数据库中表内容的统计信息,并将结果存储在pg_statistic系统目录中。随后,查询计划器使用这些统计信息来帮助确定最有效的查询执行计划。你可以在这里了解更多。

如果没有参数,ANALYZE将检查当前数据库中的每个表。通过一个参数,ANALYZE只检查那个表。还可以提供一个列名称列表,在这种情况下,只收集这些列的统计信息。

4 -总体缓慢

a)考虑禁用pg_stat_statements,这可以通过访问Azure Portal上的服务器参数刀片服务器并设置"pg_stat_statements "来完成。跟踪没有。
禁用此功能后,一些客户的工作负载的性能提高了50%。禁用pg_stat_statements的代价是无法解决性能问题。

b)网络时延:检查客户端与数据库服务实例之间的网络时延。您可以通过运行简单的查询’ SELECT 1 '来检查网络延迟。

c)考虑禁用以下服务器参数,以减少数据库端的开销。这些服务器参数有助于理解您的工作负载,但事实证明,启用这些参数会导致性能下降。
—log_duration = OFF
—log_min_duration_statement = -1
—log_statement_stats = OFF

d) Checkpoint:定时将缓存的数据刷新到磁盘上,以保证数据的持久性。这是一项IO紧张的工作,会对性能产生一些影响。对于较大的数据库,请考虑更改以下两个服务器参数:

  • bgwriter_delay = 20

  • checkpoint_completion_target = 0.2

e) Autovacuum:
PostgreSQL使用多版本并发控制(MVCC)来实现更高的数据库并发性。每次更新都会导致插入和删除,而每次删除都会导致行被软标记以便删除。软标记识别稍后将被清除的死元组。为了执行这些任务,PostgreSQL会运行一个真空作业。更多信息可以在这里找到。

需要调整“autovacuum_*”服务器参数,使其更有效、更少侵入性。

查询级别故障排除

使用Microsoft Intelligent Performance工具来探索被认为是顶级用户的查询,并了解丢失的索引以及对工作负载的建议和全面分析。Azure数据库的智能性能包括:

1)查询存储:

Azure Database for PostgreSQL中的查询存储特性提供了一种跟踪查询性能的方法。查询存储通过帮助您快速找到运行时间最长和资源最密集的查询,从而简化了性能故障排除。查询存储自动捕获查询和运行时统计信息的历史记录,并保留它们供您查看。它按时间窗口分隔数据,这样您就可以看到数据库的使用模式。所有用户、数据库和查询的数据都存储在PostgreSQL Azure数据库实例的一个名为azure_sys的数据库中。
在这里了解更多关于查询存储的信息。

您还可以查看查询存储的一些使用场景和查询存储的一些最佳业务。

2)查询性能洞察

Query Performance Insight帮助您快速确定运行时间最长的查询是什么,它们如何随时间变化,以及什么等待正在影响它们。

3)性能的建议

性能建议特性分析您的数据库,以创建定制的建议以提高性能。为了生成建议,分析将查看各种数据库特征,包括模式。在服务器上启用查询存储以充分利用性能建议特性。在实现任何性能建议之后,您应该测试性能以评估这些更改的影响。

文章参考:

  1. Performance updates and tuning best practices for using Azure Database for PostgreSQL

  2. Performance best practices for using Azure Database for PostgreSQL

  3. Improve Performance of Read Intensive Workloads on Azure DB for PostgreSQL using Query Caching

  4. Set up Pgpool-II Query Caching with Azure Database for PostgreSQL

  5. Steps to install and setup PgBouncer connection pooling proxy with Azure DB for PostgreSQL

原文标题:Performance Troubleshooting Basics on Azure Database for PostgreSQL
原文作者:Bashar Hussein
原文地址:https://techcommunity.microsoft.com/t5/azure-database-for-postgresql/performance-troubleshooting-basics-on-azure-database-for/ba-p/819227

最后修改时间:2022-07-08 17:55:38
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论