PostgreSQL 12 preview - Move max_wal_senders out of max_connections for connection slot handling

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 标签 PostgreSQL , max_wal_senders , max_connections , sorry, too many clients already 背景 如果你需要使用PG的流复制,上游节点的max_wal_senders参数,用来限制这个节点同时最多可以有多少个wal sender进程。 包括逻辑复制、物理复制、pg_basebackup备份等,只要是使用stre

标签

PostgreSQL , max_wal_senders , max_connections , sorry, too many clients already


背景

如果你需要使用PG的流复制,上游节点的max_wal_senders参数,用来限制这个节点同时最多可以有多少个wal sender进程。

包括逻辑复制、物理复制、pg_basebackup备份等,只要是使用stream protocol的连接,每个连接都需要一个wal sender进程,与之建立stream protocol通讯。

在12的版本以前,max_wal_senders是算在max_connections里面的,也就是说,如果用户的普通连接把数据库连接占光了,流复制连接也会不够用。

12修正了这个问题,max_wal_senders参数独立控制,不算在max_connections里面。普通连接与流复制连接相互不再干扰。

同时要求standby节点的max_wal_senders参数,必须大于或等于primary(上游)数据库的max_wal_senders参数。 与要求standby节点的max_connections参数,必须大于或等于primary(上游)数据库的max_connections参数一样。

https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=ea92368cd1da1e290f9ab8efb7f60cb7598fc310

Move max_wal_senders out of max_connections for connection slot handling  
  
Since its introduction, max_wal_senders is counted as part of  
max_connections when it comes to define how many connection slots can be  
used for replication connections with a WAL sender context.  This can  
lead to confusion for some users, as it could be possible to block a  
base backup or replication from happening because other backend sessions  
are already taken for other purposes by an application, and  
superuser-only connection slots are not a correct solution to handle  
that case.  
  
This commit makes max_wal_senders independent of max_connections for its  
handling of PGPROC entries in ProcGlobal, meaning that connection slots  
for WAL senders are handled using their own free queue, like autovacuum  
workers and bgworkers.  
  
One compatibility issue that this change creates is that a standby now  
requires to have a value of max_wal_senders at least equal to its  
primary.  So, if a standby created enforces the value of  
max_wal_senders to be lower than that, then this could break failovers.  
Normally this should not be an issue though, as any settings of a  
standby are inherited from its primary as postgresql.conf gets normally  
copied as part of a base backup, so parameters would be consistent.  

参考

《PostgreSQL 拒绝服务DDOS攻击与防范》

 

免费领取阿里云RDS PostgreSQL实例、ECS虚拟机

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
5月前
|
消息中间件 Java 关系型数据库
实时计算 Flink版操作报错合集之从 PostgreSQL 读取数据并写入 Kafka 时,遇到 "initial slot snapshot too large" 的错误,该怎么办
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
1011 0
|
6月前
|
关系型数据库 MySQL 数据库
实时计算 Flink版操作报错之遇到报错org.postgresql.util.psqlexception: The connection attempt failed.,该怎么解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
存储 关系型数据库 PostgreSQL
PostgreSQL TID及tuple slot
PostgreSQL TID及tuple slot
222 0
PostgreSQL TID及tuple slot
|
SQL 关系型数据库 Shell
解决Windows下Postgresql使用copy导入out文件报Permission denied的问题
解决Windows下Postgresql使用copy导入out文件报Permission denied的问题
236 0
解决Windows下Postgresql使用copy导入out文件报Permission denied的问题
|
SQL 弹性计算 关系型数据库
PostgreSQL 12 preview - CTE 增强,支持用户语法层控制 materialized 优化
标签 PostgreSQL , CTE , materialized , not materialized , push down 背景 PostgreSQL with 语法,能跑非常复杂的SQL逻辑,包括递归,多语句物化计算等。 在12以前的版本中,WITH中的每一个CTE(common table express),都是直接进行物化的,也就是说外层的条件不会推到CTE(物化节点)里
1000 0
|
弹性计算 安全 关系型数据库
PostgreSQL 12 preview - 可靠性提升 - data_sync_retry 消除os层write back failed status不可靠的问题
标签 PostgreSQL , data_sync_retry , write back , retry , failed status 背景 有些OS系统,对fsync的二次调用不敏感,因为OS层可能有自己的CACHE,如果使用了buffer write,并且出现write back failed的情况,有些OS可能在下次fsync时并不能正确的反馈fsync的可靠性与否。(因为这个B
569 0
|
SQL 关系型数据库 数据库
PostgreSQL一条SQL引发系统out of memory
错误描述 (1) Postgres执行的原SQL: select COALESCE(m1.place_id, m2.place_id, m3.place_id) as place_id, concat_ws('``', m1.
2040 0
|
SQL Oracle 算法
PostgreSQL 12 preview - plan_cache_mode参数控制强制使用plan cache或强制custom plan (force_custom_plan and force_generic_plan)
标签 PostgreSQL , plan_cache_mode 背景 plan cache在OLTP中,可以大幅降低生成sql parser, 执行计划的开销。 但是在某些场景中,plan cache可能成为问题,比如AP类型的场景中,由于SQL 输入条件的变化(通常AP业务涉及的条件可能比较容易出现这样的问题),可能导致plan cache并不是最佳的执行计划。
1388 0
|
Java 关系型数据库 PostgreSQL
|
物联网 关系型数据库 数据库