pgsql + pgbouncer高并发配置

PostgreSQL系列- 6 - PgBouncer连接池 能够缓存和PostgreSQL的连接,当有连接请求进来的时候,直接分配空闲进程,而不需要PostgreSQL fork出新进程来建立连接,以节省创建新进程,创建连接的资源消耗 阅读详情

pgbouncer 介绍

PGBouncer是一个轻量级的针对PostgreSQL的数据库连接池工具,能够给客户端提供一个统一的链接视图。
PgBouncer的作用 
    a.PgBouncer可以在后端数据库和前端应用间建立连接的桥梁,由PgBouncer去处理和后端数据库的连接关系。 
    b.对客户端连接进行限制,预防过多或者恶意的连接请求。 
PgBouncer的特点 
    a.内存消耗低(默认为2k/连接),因为Bouncer不需要每次都接受完整的数据包 
    b.可以把不同的数据库连接到一个机器上,而对客户端保持透明 
    c.支持在线的重新配置而无须重启 
    d.仅支持V3协议,因此后端版本须>=7.4 (引自 pgsqldb中文站 )

pgbouncer安装

wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz

$ tar -zxvf libevent-2.0.21-stable.tar.gz$ cd libevent-2.0.21-stable$ ./configure --prefix=/usr/local/libevent$ make$ make install

wget http://pgfoundry.org/frs/download.php/3393/pgbouncer-1.5.4.tar.gz

$ tar -zxvf pgbouncer-1.5.4.tar.gz$ cd pgbouncer-1.5.4$ ./configure --prefix=/usr/local/pgbouncer/ --with-libevent=/usr/local/libevent/$ make $ make install
注意设置libevent 的环境变量不然后面启动 pgbouncer会出错
$ vim /etc/profile

export LD_LIBRARY_PATH=/usr/local/libevent/lib:$LD_LIBRARY_PATH

pgbouncer 配置

主要两个文件pgbouncer.ini 和userlist.txt文件,可以参考/usr/local/pgbouncer/share/doc/下对应的两个示例文件。

复制这两个文件到/usr/local/pgbouncer/目录下面.

这里看下pgbouncer.ini的配置,其主要说明可以从上面说的路径中查看对应的说明

[databases]
server_main = host=localhost port=5432 dbname=booksair user=postgres password=123456 connect_query='SELECT 1'
 
[pgbouncer]
listen_port = 6432
listen_addr = localhost
auth_type = md5
auth_file = /usr/local/pgbouncer/userlist.txt
logfile = /usr/local/pgbouncer/pgbouncer.log
pidfile = /usr/local/pgbouncer/pgbouncer.pid
admin_users = postgres
pool_mode = session
ignore_startup_parameters = extra_float_digits
max_client_conn = 1000

pool_mode 指明了连接池的模型,pgbouncer目前支持三种连接池模型。分别是session, transaction和statment三个级别。

  • a. session. 会话级链接。只有与当客户端的会话结束时,pgbouncer才会收回已分配的链接
  • b. transaction 事务级连接。当事务完成后,pgbouncer会回收已分配的链接。也就是说客户端只是在事务中才能独占此链接,非事务的对数据库的请求是没有独享的链接的。
  • c. statement 语句级链接。任何对数据库的请求完成后,pgbouncer都会回收链接。此种模式下,客户端不能使用事务,否则会造成数据的不一致。

pgbouncer的默认设置是session链接。

auth_type和auth_file是bppgbouncer用以完成客户端身份认证。auth_file中保存用户名和密码,根据验证方式(auth_type)的不同,auth_file的内容也有不同。

  • md5: 基于md5的密码验证,auth_file中需要有普通文本和md5值两种形式的密码;
  • crypt: 基于crypt的密码验证(man 3 crypt), auth_file必须包含文本密码;
  • plain: 明文验证方式;
  • trust: 不进行验证,但auth_file依然需要保存用户名;
  • any: 也不进行验证,而且auth_file中不需要保存用户名了。但此种方式需要在pg_template1中明确说明用户名进行真实数据库的登录。如: pg_template1 = host=127.0.0.1 user=exampleuser dbname=template1.否则会报错的。

需要说明的是:auth_file中的用户名、密码都必须使用双引号,否则还是报错。

例如:auth_type = md5,那么user.txt,需要同时包括明文和加密码后的账号密码:

"postgres" "123456"
"postgres" "md5a3556571e93b0d20722ba62be61e8c2d"

这里第二行的账号和MD5密码,md5密码为

"md5" + md5(password + username)

或者通过查询数据库中pg_authid获取

在数据库服务器上运行,生成的文件userlist.txt放至配置目录下。
postgres=# \o userlist.txt
postgres=# SELECT rolname,rolpassword from pg_authid where rolname = 'postgres';
postgres=# \o
postgres=# \q

更多的参数说明请查看这里。

pgbouncer 启动与说明

启动pgbouncer ,这里必须以postgresql服务器用户启动,例如postgres(如果没有这个用户, 也可创建一个, 具体百度)。这里需要把pgbouncer的安装目录修改权限为postgres账户。chown -R postgres.postgres /usr/local/pgbouncer. 这样才能采用postgres账号启动。

su postgres
/usr/local/pgbouncer/bin/pgbouncer -d /usr/local/pgbouncer/pgbouncer.ini
然后通过 postgresql 的psql登录pgbouncer工具的数据库pgbouncer,以便查看pgbouncer工具的状态。

这里注意连接pgbouncer 要采用pgbouncer.ini配置的pgbouncer节的listen端口:

xxxx-MacBook-Pro:~ xxxx$ psql -h 192.168.3.104 -p 6432 -U postgres server_main
Password for user postgres: 
psql (9.5.1)
Type "help" for help.
pgsql=# help


php pdo连接pgbouncer


$db = new PDO( "pgsql:host=localhost;port=6432;dbname=server_main", $username, $password);


PostgreSQL 高并发优化:从 “连接数满到崩” 到 “支撑 10 万 QPS” 的实战技巧 PostgreSQL高并发优化实战:从MySQL无缝迁移的终极指南 本文针对MySQL高并发场景的三大痛点(连接数满、锁等待超时、QPS瓶颈),系统性地介绍了PostgreSQL的高速并发解决方案。通过四大核心优化模块(连接池配置、锁机制优化、参数调优、SQL优化),结合电商秒杀场景案例,详细展示了PG如何实现单实例10万QPS的突破性性能。文章特别采用MySQL与PG16的对比方式,帮助MySQL开发者快速理解PG的高并发优势:轻量级线程模型(内存占用仅为MySQL1/10)、精细锁机制(锁等待降低80% 阅读详情

相关推荐

搭建PgBouncer PostgreSQL数据库连接池的教程

通过搭建PgBouncer连接池,你可以有效地管理和重用PostgreSQL数据库连接,从而提高数据库的性能和可扩展性。按照本文提供的步骤进行操作,你将能够成功搭建PgBouncer,并开始享受它带来的好处。PgBouncer是一个流行的PostgreSQL数据库连接池,它可以提供连接池管理和连接重用功能,从而提高数据库的性能和可扩展性。替换为PgBouncer的主机地址(如果PgBouncer和数据库在同一台机器上,则为。完成安装后,我们需要进行PgBouncer的配置。在上面的配置中,你需要将。

QvisCs的博客 420

PostgreSQL运行参数介绍 & `max_connections` 和 CPU 核数

指定数据库实例的数据目录路径,即数据库存储数据文件的位置。:指定 PostgreSQL 的配置文件路径,该文件包含了数据库的各种配置设置。:指定数据库服务器监听的网络地址,设置为 0.0.0.0 表示监听所有可用的网络接口。:指定数据库服务器监听的端口号,客户端连接时需要使用该端口进行通信。:指定数据库集群的名称,用于唯一标识该数据库集群。:指定 WAL(Write-Ahead Logging)的级别,设置为 logical 表示启用逻辑复制。

喝醉酒的小白 4028

【3d打印】基于Klipper的3d打印远程上位机系统(Qt),klipper源码,通信解析,打印参数设置

基于Klipper的3d打印远程上位机系统(Qt),klipper源码,通信解析,打印参数设置(启庞Kp3s V1)

共享IT之美,共创机器未来 3193

Postgresql部署及备份工具pgbackrest部署使用

Postgresql部署及备份工具pgbackrest部署使用

strivelcy的博客 2973

从零构建无线AM信号模拟系统:基于STM32与AD9959的国赛一等奖方案解析

本文详细解析了基于STM32F103RCT6与AD9959芯片构建无线AM信号模拟系统的国赛一等奖方案。文章从项目背景、核心芯片选型出发,深入剖析了系统架构、硬件电路设计及软件控制逻辑,重点分享了“直流偏置叠加法”实现AM调制、多径模拟以及高频电路调试的实战经验与避坑指南,为参加全国大学生电子设计大赛的选手提供了一套完整、可靠的复现路径。

weixin_29182481的博客 181

UVM概述及uvm_component和uvm_object(一)

UVM:Universal Verification Methodology(通用验证方法学) UVM:是建立在systemverilog平台上的一个库,提供了一系列的接口,让我们能够更方便的进行验证。验证平台组成: Driver:用来把不同的激励施加给DUT; Monitor:用来检测DUT的输出; Scoreboard:专门用来比较期望值与monitor检测到的DUT输出; Refer

南国之邱 1万+

PostgreSQL并发处理

查询执行:当用户提交查询请求时,PostgreSQL的查询执行引擎将解析和优化查询计划,并将其转化为一系列CPU指令,以执行相关的数据库操作。需要注意的是,虽然CPU对于并发处理至关重要,但并发性能的提升不仅仅依赖于CPU的性能,还取决于许多其他因素,如内存访问速度、磁盘I/O性能、网络带宽等。你无需在查询语句中指定。请注意,不是所有的查询都适合并行执行,并行查询的效果也取决于硬件资源和查询本身的特点。如果你想要在查询中使用并行查询,可以通过修改 PostgreSQL 的配置文件来设置并行查询的级别。

喝醉酒的小白 3175

生成式引擎优化(GEO):启动GEO优化的5个有效策略

随着生成式AI的普及,传统SEO正被GEO(生成式引擎优化)取代。本文提出GEO五大核心策略:用户意图解析、结构化内容设计、语义关键词优化、对话式内容创作和权威信源建设。研究表明,优化后的内容在AI答案中的引用率提升300%,点击率增长27%。文章还介绍了BERT模型、Schema标记等关键技术工具,并指出未来GEO将向多模态优化、实时数据更新方向发展。企业需避免简单堆砌关键词,应建立长期内容策略,通过结构化、权威性内容在AI时代保持竞争优势。

解锁AI流量新红利!🚀 GEO优化(生成引擎优化)助您掌控AI搜索,让AI成为您的品牌最佳代言人! 2786

宝塔Mysql无法启动

【代码】宝塔Mysql无法启动。

m0_52796585的博客 1047

虚拟机ubuntu22.04.3中安装vitis2024.1注意事项

虚拟机ubuntu安装vitis2024.1

qq_52033578的博客 2497

基于STM32F103的智能门禁门锁门卫系统设计

本文设计了一种基于STM32F103单片机的智能门禁系统,集成了密码、射频IC卡和指纹识别三种验证方式。系统采用模块化设计,包含MFRC522射频模块、AS608指纹模块、矩阵键盘、OLED显示和舵机控制等硬件,实现了身份验证、密码修改、IC卡/指纹管理以及安全防护功能。测试结果表明系统响应迅速(密码验证250ms、指纹验证600ms)、功耗低(待机50mA),且具备掉电密码保存功能。该系统操作简便、功能完善,适用于家庭和办公场所,具有较高实用价值。未来可扩展远程控制、人脸识别等功能以进一步提升智能化水平。

3254968421的博客 320

postgresql pgsql 连接池 pgBouncer(详细)

postgresql的pgbouncer连接池

ziqibit的博客 3923

帝企鹅优化器(EPO)详解:从基础原理到代码实战

帝企鹅优化器(EPO)是受帝企鹅群体在极寒环境中抱团取暖行为启发,于2018年提出的一种群体智能优化算法。其核心机制是模拟帝企鹅种群通过动态调整位置来维持体温的过程,主要包括确定集群边界、计算温度分布、衡量个体间距离以及更新位置四个步骤,从而在求解复杂优化问题时有效平衡全局探索与局部开发。该算法具有参数少、结构清晰、易于实现等优点,在工程优化、图像处理、机器学习特征选择以及冷链物流车辆路径规划等领域展现出良好的应用潜力。

qq_42212808的博客 140

php pgsql 连接池,PostgreSQL数据库连接池PgBouncer的搭建

最近有些项目我们是采用PostgreSQL进行后端数据库,由于要对客户端的连接使用类型和连接数进行控制,因此我们采用PgBouncer来进行最近有些项目我们是采用PostgreSQL进行后端数据库,由于要对客户端的连接使用类型和连接数进行控制,因此我们采用PgBouncer来进行实施。PgBouncer相关的基本文档pgsqldb中文站已经有不少文档,这里我就不再作过多的说明,我将集中对其中的几个...

weixin_39612499的博客 635

MuJoCo 入门教程(八)Model仓库

一个物理仿真器的好坏取决于它所仿真的模型,而在像 MuJoCo 这样功能强大、建模选项众多的仿真器中,很容易创建出行为与预期不符的 "坏 "模型。MuJoCo Menagerie 的目标是为社区提供一个设计精良、开箱即用的模型集。更多信息,请访问 Menagerie 资源库。

机器人控制与仿真应用 1940

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

postgreSQL连接池pgbouncer的使用

转载自: 这里  前端时间看了看服务器还有多余的内存,由于数据库和程序都在一个服务器上,就想看看有什么提升并发的方法。试用了下pgbouncer ,记录下。1.源码安装: https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz$ cd libevent-2.0.21-stable $ ./confi

luojinbai的专栏 8957

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Linux 下安装pgbouncer

系统环境准备 1 创建用户: sudo groupadd postgres sudo useradd -g postgres postgres 2 创建目录并赋权 sudo mkdir -p /opt/pgbouncer sudo mkdir -p /export/pgbouncer_data sudo chown -R postgres: /expo...

weixin_33755557的博客 482

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

postgresql从入门到精通 - 第35讲:中间件PgBouncer部署|PostgreSQL教程

应用程序如果直接与PostgreSQL连接,每次连接pg都会克隆出一个服务进程来为应用程序提供服务,关闭连接后pg会自动将服务进程给停掉.频繁的创建和销毁进程,会消耗比较多的系统资源,pgbouncer会将与pg的连接缓存住,当有请求进来,只是分配一个空闲的连接,这样降低了系统资源的消耗。max_packet_size:通过PgBouncer最大的包大小,包可以是一个SQL,也可以是返回的结果,默认值是2147483647。在客户端连接的时候,在它的连接生命期内,会给它赋予一个服务器连接。

m0_65303136的博客 1515

在 Dokploy 中为 PostgreSQL 搭建 PgBouncer 数据库连接池(图文)

摘要:Next.js应用通过PgBouncer连接PostgreSQL的配置指南 本文详细介绍了如何为Next.js应用配置PgBouncer连接池,解决与PostgreSQL数据库连接过多的问题。主要内容包括: 架构调整:从直连模式改为通过PgBouncer管理的连接池模式 部署步骤: 创建PgBouncer服务 配置端口映射 准备和挂载配置文件(pgbouncer.ini和userlist.txt) 关键配置: 设置连接池模式和大小 配置认证方式 更新Next.js的DATABASE_URL环境变量 注

梦染 * 星尘 的博客 1051

PostgreSQL数据库开源连接池pgbouncer的使用

首先,先介绍一个postgresql的资源网站:http://pgfoundry.org/ 这里面有非常多和POSTGRESQL相关的资源。 pgbouncer是一个非常小型的连接池,最经典的用法是在plproxy环境中。 这里介绍一下在LINUX平台下的安装和使用,安装时需要libevent,gcc,make等常用工具。 下载: 源码 http://pgfoundry.org/frs/d

wan_xie2009的专栏 1280

如何在 CentOS Stream 9 上配置并优化 PostgreSQL 15,支持高并发的数据插入与快速查询?

合理分配内存与缓存参数批量写入、减少索引维护开销使用连接池 PgBouncer 降低连接压力基于执行计划优化查询与索引策略这些优化策略适用于多数中大型系统的生产数据库。如需更高性能,可结合物理分区、逻辑复制或分布式扩展进一步提升。

A5数据 860

PostgreSQL连接池pgbouncer的使用

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34179762的博客 175

Pgbouncer unix socket is in use, cannot continue

为什么80%的码农都做不了架构师?>>> ...

weixin_34221073的博客 997

PostgreSQL 数据库HAProxy和PgBouncer配置高可用架构

一.OS PackagesCentOS 7.2 X64pcre-developenssl-develzlib-devel二.编译安装haproxy1.编译安装haproxy-1.7.1.tar.gz# make TARGET=linux2628 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 PREFIX=/usr/local/haproxy.......

weixin_34116110的博客 609

php和pgsql集成环境,centos环境+pgsql+postgis+apache+php等插件的安装

1、centos系统的安装只作为服务器的话,选Minimal2、pgsql的安装3、postgis的安装安装geos时出现“line 990: g++: command not found”错误解决方法:[root@cqs geos-3.4.2]# yum -y groupinstall ‘Development Tools’安装postgis时先安装gdal-1.11.2、geos-3.4.2、...

weixin_39599097的博客 332
上一篇: php centOS7 安装php 及 mssql mysql pgsql扩展
下一篇: Linux下用freetds连接mssql中文乱码的问题
希望丶
博客等级 码龄12年 2粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值