热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

postgresql数据库连接池pgbouncer的使用方法

前端时间看了看服务器还有多余的内存,由于数据库和程序都在一个服务器上,就想看看有什么提升并发的方法。试用了下pgbouncer,记录下。$cdlibevent-2.0.21-stable$./configure--prefix/usr/local/libevent$make$makeinstall$cdpgbounce

前端时间看了看服务器还有多余的内存,由于数据库和程序都在一个服务器上,就想看看有什么提升并发的方法。试用了下pgbouncer,记录下。

$ cd libevent-2.0.21-stable

$ ./configure --prefix=/usr/local/libevent

$ make

$ make install

$ cd pgbouncer-1.5.4

$ ./configure --prefix=/usr/local/pgbouncer/ --with-libevent=/usr/local/libevent/

$ make

$ make install

注意设置libevent 的环境变量不然后面启动 pgbouncer会出错

vim /ect/profile

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

2.pgbouncer配置

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

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

[databases]

server_main = host=localhost port=5432 dbname=booksair user=postgres password=12

3456 connect_query='SELECT 1'

[pgbouncer]

listen_port = 5433

listen_addr = localhost

auth_type = md5

auth_file = /usr/local/pgbouncer/user.txt

logfile = /usr/local/pgbouncer/pgbouncer.log

pidfile = /usr/local/pgbouncer/pgbouncer.pid

admin_users = postgres

pool_mode = Transaction

ignore_startup_parameters = extra_float_digits

max_client_cOnn= 1000

3.pgbouncer启动与说明

启动pgbouncer ,这里必须以postgresql服务器用户启动,例如postgres

su postgres

/usr/local/pgbouncer/bin/pgbouncer -d /usr/local/pgbouncer/conf/pgbouncer.ini

然后通过 postgresql 的psql登录pgbouncer工具的数据库pgbouncer,以便查看pgbouncer工具的状态。

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

cd /usr/local/postgresql/bin

su postgres

./psql -h localhost -p 5433 -U postgres pgbouncer

采用show config; 查看pgbouncer的配置,包括pgbouncer.ini配置文件中配置:

pgbouncer=# show config;

key | value | changeable

---------------------------+------------------------------------+------------

job_name | pgbouncer | no

conffile | ../conf/pgbouncer.ini | yes

logfile | /usr/local/pgbouncer/pgbouncer.log | yes

pidfile | /usr/local/pgbouncer/pgbouncer.pid | no

listen_addr | 127.0.0.1 | no

listen_port | 5433 | no

listen_backlog | 128 | no

unix_socket_dir | /tmp | no

unix_socket_mode | 511 | no

unix_socket_group | | no

auth_type | md5 | yes

auth_file | /usr/local/pgbouncer/user.txt | yes

pool_mode | transaction | yes

max_client_conn | 100 | yes

default_pool_size | 20 | yes

min_pool_size | 0 | yes

reserve_pool_size | 0 | yes

reserve_pool_timeout | 5 | yes

syslog | 0 | yes

syslog_facility | daemon | yes

syslog_ident | pgbouncer | yes

user | | no

autodb_idle_timeout | 3600 | yes

server_reset_query | DISCARD ALL | yes

server_check_query | select 1 | yes

server_check_delay | 30 | yes

query_timeout | 0 | yes

query_wait_timeout | 0 | yes

client_idle_timeout | 0 | yes

client_login_timeout | 60 | yes

idle_transaction_timeout | 0 | yes

server_lifetime | 3600 | yes

server_idle_timeout | 600 | yes

server_connect_timeout | 15 | yes

server_login_retry | 15 | yes

server_round_robin | 0 | yes

suspend_timeout | 10 | yes

ignore_startup_parameters | | yes

disable_pqexec | 0 | no

dns_max_ttl | 15 | yes

dns_zone_check_period | 0 | yes

max_packet_size | 2147483647 | yes

pkt_buf | 2048 | no

sbuf_loopcnt | 5 | yes

tcp_defer_accept | 1 | yes

tcp_socket_buffer | 0 | yes

tcp_keepalive | 1 | yes

tcp_keepcnt | 0 | yes

tcp_keepidle | 0 | yes

tcp_keepintvl | 0 | yes

verbose | 0 | yes

admin_users | postgres | yes

stats_users | | yes

stats_period | 60 | yes

log_connections | 1 | yes

log_disconnections | 1 | yes

log_pooler_errors | 1 | yes

(57 rows)

采用 show clients;查看连接状态:

pgbouncer=# show clients;

type | user | database | state | addr | port | local_addr | local_port | connect_time | request_time | ptr | link

------+----------+-----------+--------+-----------+-------+------------+------------+---------------------+---------------------+-----------+------

C | postgres | pgbouncer | active | 127.0.0.1 | 42782 | 127.0.0.1 | 5433 | 2013-06-13 00:05:19 | 2013-06-13 00:08:52 | 0x935c310 |

(1 row)

这里应用程序连接数据库的还没有启用,所以只有我通过shell命令psql 的连接。


推荐阅读
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • CentOS 7.6环境下Prometheus与Grafana的集成部署指南
    本文旨在提供一套详细的步骤,指导读者如何在CentOS 7.6操作系统上成功安装和配置Prometheus 2.17.1及Grafana 6.7.2-1,实现高效的数据监控与可视化。 ... [详细]
  • 请看|间隔时间_Postgresql 主从复制 ... [详细]
  • 本文详细介绍如何使用Samba软件配置CIFS文件共享服务,涵盖安装、配置、权限管理及多用户挂载等关键步骤。通过具体示例和命令行操作,帮助读者快速搭建并优化Samba服务器。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 从零开始构建完整手机站:Vue CLI 3 实战指南(第一部分)
    本系列教程将引导您使用 Vue CLI 3 构建一个功能齐全的移动应用。我们将深入探讨项目中涉及的每一个知识点,并确保这些内容与实际工作中的需求紧密结合。 ... [详细]
  • 本文详细介绍了 MySQL 中 LAST_INSERT_ID() 函数的使用方法及其工作原理,包括如何获取最后一个插入记录的自增 ID、多行插入时的行为以及在不同客户端环境下的表现。 ... [详细]
  • 在成功安装和测试MySQL及Apache之后,接下来的步骤是安装PHP。为了确保安全性和配置的一致性,建议在安装PHP前先停止MySQL和Apache服务,并将MySQL集成到PHP中。 ... [详细]
  • Nginx 反向代理与负载均衡实验
    本实验旨在通过配置 Nginx 实现反向代理和负载均衡,确保从北京本地代理服务器访问上海的 Web 服务器时,能够依次显示红、黄、绿三种颜色页面以验证负载均衡效果。 ... [详细]
  • 嵌入式开发环境搭建与文件传输指南
    本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
  • 在Fedora 31上部署PostgreSQL 12
    本文详细介绍如何在Fedora 31操作系统上安装和配置PostgreSQL 12数据库。包括环境准备、安装步骤、配置优化以及安全设置,确保数据库能够稳定运行并提供高效的性能。 ... [详细]
  • 本文探讨了如何在Classic ASP中实现与PHP的hash_hmac('SHA256', $message, pack('H*', $secret))函数等效的哈希生成方法。通过分析不同实现方式及其产生的差异,提供了一种使用Microsoft .NET Framework的解决方案。 ... [详细]
  • 本文详细介绍了如何在云服务器上配置Nginx、Tomcat、JDK和MySQL。涵盖从下载、安装到配置的完整步骤,帮助读者快速搭建Java Web开发环境。 ... [详细]
  • NFS(Network File System)即网络文件系统,是一种分布式文件系统协议,主要用于Unix和类Unix系统之间的文件共享。本文详细介绍NFS的配置文件/etc/exports和相关服务配置,帮助读者理解如何在Linux环境中配置NFS客户端。 ... [详细]
author-avatar
JAYBRYANT-24
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有