热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PostgreSQL12版本预览:分离max_wal_senders和max_connections的连接槽处理

本文介绍了PostgreSQL12中的一项重要改进,即max_wal_senders参数不再计入max_connections,从而解决了流复制连接槽不足的问题。

作者

digoal


日期

2019-03-09


标签

PostgreSQL, max_wal_senders, max_connections, 连接槽管理




背景

在 PostgreSQL 中,流复制功能依赖于 wal sender 进程来传输写前日志(WAL)。这些进程用于支持物理复制、逻辑复制以及 pg_basebackup 备份等操作。每个使用流协议的连接都需要一个 wal sender 进程。

在 PostgreSQL 12 之前的版本中,max_wal_senders 参数是计入 max_connections 的。这意味着,如果普通用户连接占用了所有可用的连接槽,流复制连接可能会因为没有足够的 wal sender 进程而失败。

为了解决这一问题,PostgreSQL 12 将 max_wal_senders 参数独立出来,不再计入 max_connections。这样,普通连接和流复制连接之间就不会互相干扰。

此外,从节点(standby)的 max_wal_senders 参数必须大于或等于主节点(primary)的 max_wal_senders 参数,以确保从节点能够处理所有来自主节点的流复制连接。

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

```
将 max_wal_senders 从 max_connections 中分离出来,独立管理连接槽

自 max_wal_senders 引入以来,在计算可用于复制连接的连接槽数量时,它一直被计入 max_connections。这可能导致一些用户在其他后端会话已被应用程序占用的情况下,无法进行基线备份或复制。超级用户专用连接槽并不是解决此问题的正确方法。

此次提交使 max_wal_senders 在处理 PGPROC 条目时独立于 max_connections,意味着 wal sender 连接槽将使用自己的空闲队列进行管理,类似于自动清理工作进程和后台工作进程。

这一变更带来的兼容性问题是,从节点现在需要具有至少等于其主节点的 max_wal_senders 值。因此,如果从节点的 max_wal_senders 设置低于主节点,可能会导致故障转移失败。不过,通常情况下这不会成为问题,因为从节点的设置通常继承自主节点,postgresql.conf 文件通常会在基线备份过程中被复制,确保参数的一致性。
```


参考

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


PostgreSQL 许愿链接

您的愿望将传达给 PG 内核开发者、数据库厂商等,帮助提高数据库产品的质量和功能。针对非常好的提议,奖励限量版 PG 文化衫、纪念品、贴纸、PG 热门书籍等,奖品丰富,快来许愿吧!


9.9元购买3个月阿里云 RDS PostgreSQL 实例


PostgreSQL 解决方案集合


德哥 / digoal's github - 公益是一辈子的事.

digoal


推荐阅读
  • 构建基于BERT的中文NL2SQL模型:一个简明的基准
    本文探讨了将自然语言转换为SQL语句(NL2SQL)的任务,这是人工智能领域中一项非常实用的研究方向。文章介绍了笔者在公司举办的首届中文NL2SQL挑战赛中的实践,该比赛提供了金融和通用领域的表格数据,并标注了对应的自然语言与SQL语句对,旨在训练准确的NL2SQL模型。 ... [详细]
  • 本文详细介绍了 GWT 中 PopupPanel 类的 onKeyDownPreview 方法,提供了多个代码示例及应用场景,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • 资源推荐 | TensorFlow官方中文教程助力英语非母语者学习
    来源:机器之心。本文详细介绍了TensorFlow官方提供的中文版教程和指南,帮助开发者更好地理解和应用这一强大的开源机器学习平台。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • RecyclerView初步学习(一)
    RecyclerView初步学习(一)ReCyclerView提供了一种插件式的编程模式,除了提供ViewHolder缓存模式,还可以自定义动画,分割符,布局样式,相比于传统的ListVi ... [详细]
  • 本文介绍了如何通过 Maven 依赖引入 SQLiteJDBC 和 HikariCP 包,从而在 Java 应用中高效地连接和操作 SQLite 数据库。文章提供了详细的代码示例,并解释了每个步骤的实现细节。 ... [详细]
  • 精选30本C# ASP.NET SQL中文PDF电子书合集
    欢迎订阅我们的技术博客,获取更多关于C#、ASP.NET和SQL的最新资讯和资源。 ... [详细]
author-avatar
小小一株含羞草2010
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有