IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> pgbouncer 使用 -> 正文阅读

[大数据]pgbouncer 使用

简介

pgbouncer 是一个 PostgreSQL 连接池。任何目标应用程序都可以像连接 PostgreSQL 服务器一样连接到pgbouncer,并且 pgbouncer 将创建到实际服务器的连接,或者重用其现有的连接。pgbouncer 的目的是降低打开新连接到 PostgreSQL 的性能影响。

连接池

PostgreSQL允许我们通过参数max_connections来控制最大连接数 ,但是如果为前端应用的每次请求都分配一个新的DB连接,那么DB服务端可能在链接风暴到来时需要一次性提供大量的连接插槽,这会严重消耗服务端的内存,并且会导致性能急剧下降。

在高并发请求的应用场景,为了保护DB,取而代之的我们可以利用连接池的连接复用特性,来避免DB被突然到来的连接洪峰淹没。这样,当应用程序一次性发送成千上万个查询的时候,如果超过了DB的处理能力,请求将在会连接池中排队,而不会导致后端PostgreSQL崩溃。

与突然分配大量DB连接相比,这种在连接池中配置固定数量的连接处理来接收请求,查询的性能要好得多。另外,客户端的连接非常轻巧,除了文件描述符外基本没有其他消耗。但我们服务端连接却很重,需要适当配置。用较少的服务器连接来支持大量的客户端连接,是我们在PostgreSQL使用pgouncer的主要用

作用

能够缓存和PostgreSQL的连接,当有连接请求进来的时候,直接分配空闲进程,而不需要PostgreSQL fork出新进程来建立连接,以节省创建新进程,创建连接的资源消耗。

能够有效提高连接的利用率,避免过多的无效连接,导致数据库消耗资源过大,CPU占用过高。

对客户端连接进行限制,预防过多或恶意的连接请求。

特点

C语言编写,效率高,内存消耗低(默认为2k/连接),因为Bouncer不需要每次都接受完整的数据包

可以把不同的数据库连接到一个机器上,而对客户端保持透明

支持在线的重新配置而无须重启

仅支持V3协议,因此后端版本须>=7.4

使用libevent进行socket通信,通信效率高。

下载路径

http://www.pgbouncer.org/downloads/

安装

依赖

GNU Make 3.81+
Libevent 2.0+
pkg-config
OpenSSL 1.0.1+ for TLS support
(optional) c-ares as alternative to Libevent’s evdns
(optional) PAM libraries
  • 安装依赖
yum install -y libevent libevent-devel 
yum install -y openssl-devel

编译安装

/configure  --prefix=/usr/local/pgbouncer  
* 如果 openssl 安装失败,可以不带 openssl 选项
/configure  --prefix=/usr/local/pgbouncer --without-openssl
make && make install

环境变量配置

echo 'export PATH=/usr/local/pgbouncer/bin:$PATH' >>/etc/profile
source /etc/profile
  • 测试
[root@localhost pgbouncer-1.17.0]# pgbouncer -V
pgbouncer: /usr/local/lib/libssl.so.10: no version information available (required by pgbouncer)
PgBouncer 1.17.0
libevent 2.0.21-stable
adns: c-ares 1.10.0
tls: OpenSSL 1.0.2k-fips  26 Jan 2017
  • 配置
 mkdir -p /etc/pgbouncer
 
cat >> /etc/pgbouncer/userlist.txt <<"EOF"
"postgres" :"passwd"
EOF
 
cat >> /etc/pgbouncer/pgbouncer.ini <<"EOF"
[databases]
*= host=207.207.35.100 port=5432 dbname=postgres user=postgres

[pgbouncer]
listen_port = 6432
listen_addr = 207.207.35.100
auth_type = md5
auth_file = /etc/pgbouncer/userlist.txt
logfile = /etc/pgbouncer/pgbouncer.log
pidfile = /etc/pgbouncer/pgbouncer.pid
admin_users = postgres
stats_users = postgres
server_reset_query = DISCARD ALL
server_check_query = select 1
server_check_delay = 30
max_client_conn = 5000
default_pool_size = 20
reserve_pool_size = 5
dns_max_ttl = 15
pool_mode=transaction
EOF

 chown postgres.postgres -R /etc/pgbouncer
  • 启动
su - postgres 
pgbouncer -d /etc/pgbouncer/pgbouncer.ini
  • 测试远程连接
[root@localhost ~]# /home/postgres/pgsql/bin/psql -U postgres -h 207.207.35.100 -p 6432 -d postgres -c "select version()"
Password for user postgres:
                                   version
------------------------------------------------------------------------------------------------------------
 PostgreSQL 11.8 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 7.5.0, 64-bit
(1 row)

参考:
https://www.modb.pro/db/104414
https://www.cnblogs.com/haha029/p/15626042.html

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-06-26 16:58:01  更:2022-06-26 17:00:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 17:54:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码