Freeze 风暴导致的IOPS飙升 - 追溯与解法

本文涉及的产品
RDS AI 助手,专业版
RDS Agent(兼容OpenClaw),2核4GB
PolarDB Agent Express,2核4GB
简介:

标签

PostgreSQL , iops 飙升 , freeze 风暴


背景

在使用PG 9.6以前的版本时,freeze带来的IOPS影响较大,体现在数据文件读写、WAL日志大量产生。

原因是9.6以前的版本,当表的年龄达到一定的阈值后(全局参数或表级参数控制),会触发freeze的动作,扫描全表,同时有可能(如果BLOCK被FREEZE的话)产生WAL(越大的表,带来的IO越大)。

freeze相关参数如下:

#autovacuum_freeze_max_age = 200000000  # maximum XID age before forced vacuum   
                                        # (change requires restart)   
#autovacuum_multixact_freeze_max_age = 400000000        # maximum multixact age   
                                        # before forced vacuum   
                                        # (change requires restart)   
   
#vacuum_freeze_min_age = 50000000   
#vacuum_freeze_table_age = 150000000   
#vacuum_multixact_freeze_min_age = 5000000   
#vacuum_multixact_freeze_table_age = 150000000   
   
log_autovacuum_min_duration=0   

那么当数据库突发IO时,如何知道是什么产生的?

1、查看日志

配置了log_autovacuum_min_duration=0时,所有的auto vacuum在日志中都会被记录下来。可以观察日志。

$PGDATA/log   
   
或   
   
$PGDATA/pg_log   

2、查看统计表,统计表记录了最后一次被VACUUM的时间。

select age(a.relfrozenxid), last_autovacuum,last_vacuum,schemaname,a.relname,pg_size_pretty(pg_total_relation_size(relid))    
  from pg_class a, pg_stat_all_tables b where a.oid=b.relid and a.relkind in ('r', 'm') order by last_autovacuum nulls last;   

可以大概推测。

   age    | last_autovacuum | last_vacuum |     schemaname     |         relname         | pg_size_pretty    
----------+-----------------+-------------+--------------------+-------------------------+----------------   
       46 |                 |             | public             | test                    | 5608 MB   
       43 |                 |             | public             | test1                   | 5784 kB   
 80593695 |                 |             | pg_catalog         | pg_statistic            | 248 kB   
 80593695 |                 |             | pg_catalog         | pg_type                 | 184 kB   
       39 |                 |             | public             | a                       | 48 kB   
       32 |                 |             | public             | b                       | 16 kB   
 80593695 |                 |             | pg_catalog         | pg_policy               | 16 kB   
       22 |                 |             | public             | c                       | 48 kB   
 80593695 |                 |             | pg_catalog         | pg_authid               | 72 kB   
..............   

3、分析WAL内容,看看是否有大量的freeze record,方法参考如下:

《PostgreSQL 使用pg_xlogdump找到误操作事务号》

《PostgreSQL xlog dump - pg_xlogdump 源码讲解》

预防freeze风暴

《PostgreSQL的"天气预报" - 如何预测Freeze IO风暴》

《PostgreSQL 大表自动 freeze 优化思路》

内核改进

《PostgreSQL 9.6 vacuum freeze大幅性能提升 代码浅析》

参考

《如何追溯 PostgreSQL 慢查询当时的状态》

《PostgreSQL的"天气预报" - 如何预测Freeze IO风暴》

《PostgreSQL 大表自动 freeze 优化思路》

《PostgreSQL 9.6 vacuum freeze大幅性能提升 代码浅析》

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍如何基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
数据采集 JavaScript 测试技术
史上最全测试开发工具推荐(含自动化、APP性能、稳定性、抓包神器)
在本篇文章中,将给大家推荐14款日常工作中经常用到的测试开发工具神器,涵盖了自动化测试、APP性能测试、稳定性测试、抓包工具等。
5957 0
史上最全测试开发工具推荐(含自动化、APP性能、稳定性、抓包神器)
|
IDE API 开发工具
FastAPI快速搭建一个博客系统
FastAPI快速搭建一个博客系统
1160 0
FastAPI快速搭建一个博客系统
|
前端开发 JavaScript 测试技术
React组件开发规范
React组件开发规范
2596 1
|
存储 SQL OLAP
分析性能提升40%,阿里云Hologres流量场景最佳实践
分析性能提升40%,阿里云Hologres流量场景最佳实践
|
Web App开发 编解码 移动开发
网页不安装插件如何播放RTSP/FLV视频
点量云流提出了一种基于后台拉流转码的方案,将RTSP/RTMP/FLV等协议的视频流转换为WebRTC格式,实现在现代浏览器中的无插件播放。此方案具有良好的兼容性,支持主流浏览器,无需担心兼容问题。它利用浏览器硬件解码能力,减少终端计算资源消耗,并且具备低延迟和高实时性的优点,延迟可控制在100ms以内,非常适合摄像头监控领域。此外,前端集成简单,仅需使用标准WebRTC接口即可接入,降低了复杂度。
1038 9
|
机器学习/深度学习 自然语言处理 算法
ICML 2024:零阶优化器微调大模型,大幅降低内存
【7月更文挑战第14天】ICML 2024研究表明,零阶优化用于大模型微调能大幅降低内存需求。该论文通过避免反向传播,减少LLM(大型语言模型)微调的内存开销,提出新方法,适用于资源受限环境。虽然性能可能不及一阶优化器,但为高效NLP计算开辟了新途径。论文链接:[arxiv.org/abs/2402.11592](https://arxiv.org/abs/2402.11592)**
645 3
|
机器学习/深度学习 数据采集 分布式计算
LabVIEW、Matlab与Python的比较:从多角度详解三大编程工具
LabVIEW、Matlab与Python的比较:从多角度详解三大编程工具
758 1
|
Android开发 iOS开发 MacOS
app公钥获取
android最简单获取方法,各大安卓应用市场搜索安装 APP备案助手,可直接快捷获取备案所需填写签名MD5值以及app公钥等信息
app公钥获取
|
缓存 安全 API
对象存储OSS产品常见问题之多租户系统用程序统计每个租户的下行流量如何解决
对象存储OSS是基于互联网的数据存储服务模式,让用户可以安全、可靠地存储大量非结构化数据,如图片、音频、视频、文档等任意类型文件,并通过简单的基于HTTP/HTTPS协议的RESTful API接口进行访问和管理。本帖梳理了用户在实际使用中可能遇到的各种常见问题,涵盖了基础操作、性能优化、安全设置、费用管理、数据备份与恢复、跨区域同步、API接口调用等多个方面。
927 0
|
前端开发 JavaScript Java
毕业设计|SpringBoot Vue3小说阅读网站系统
毕业设计|SpringBoot Vue3小说阅读网站系统
722 2