成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

pgbouncer的簡單使用(下篇)

IT那活兒 / 3071人閱讀
pgbouncer的簡單使用(下篇)
相關(guān)閱讀:
王宇,公眾號(hào):IT那活兒pgbouncer的簡單使用(上篇)


四. 啟動(dòng)pgbouncer

啟動(dòng)pgbouncer ,這里必須以postgresql服務(wù)器用戶啟動(dòng),例如postgres。這里需要把pgbouncer的安裝目錄修改權(quán)限為postgres賬戶。chown -R postgres.postgres /usr/local/pgbouncer. 這樣才能采用postgres賬號(hào)啟動(dòng)。
su - postgres
/usr/local/pgbouncer/bin/pgbouncer -d /usr/local/pgbouncer/conf/pgbouncer.ini

[postgres@localhost config]$ pgbouncer -d pgbouncer.ini
2012-08-21 00:29:55.573 4247 LOG File descriptor limit: 1024 (H:1024), max_client_conn: 100, max fds possible: 130

查看日志 
tail -f /home/postgres/pgbouncer/pgbouncer.log

命令介紹

pgbouncer [-d][-R][-v][-u user]

-d 后臺(tái)運(yùn)行

-R 在線重啟

-v 增加冗余信息,會(huì)消耗比較多的時(shí)間

-u 切換到指定的用戶啟動(dòng)

-q 靜默方式,不記錄到stdout。請注意這并不影響記錄詳細(xì),只是stdout是不被使用。在init.d腳本使用

-V 展示版本

-h 展示幫助命令

pgbouncer -V|-h

pgbouncer -d pgbouncer.ini -v ##加-v 可以打印出很多檢查信息,對初使用者,是個(gè)不錯(cuò)的選擇


關(guān)閉命令
用管理員用戶登錄pgbouncer 數(shù)據(jù)庫 ,這個(gè)是一個(gè)虛擬庫,然后執(zhí)行shutdown 命令

psql -h 127.0.0.1 -p 6432 -u pgbouncer pgbouncer
(-u 后面接管理員用戶)


1. 使用客戶端連接到pgbouncer:

然后通過 postgresql 的psql登錄pgbouncer工具的數(shù)據(jù)庫pgbouncer,以便查看pgbouncer工具的狀態(tài)。
這里注意連接pgbouncer 要采用pgbouncer.ini配置的pgbouncer節(jié)的listen端口:
[postgres@localhost pgbouncer]$ psql -h 127.0.0.1 -p 1999 -U u_kenyon f_game
Password for user u_kenyon: 
psql (9.1.2)
Type "help" for help.

f_game=> d
          List of relations
 Schema |    Name   | Type  | Owner
------------+-------------+--------+-------------
 public    |
 t_kenyon  | table  | postgres
 public    | test          | table  | test
 public    |
 test2        | table  | postgres
(3 rows)

f_game=> q

參數(shù)使用例子
連接pgbouncer本身的DB


[postgres@localhost config]$ psql -h 127.0.0.1 -p 1999 -U u_kenyon pgbouncer
Password for user u_kenyon: 
psql (9.1.2, server 1.5.2/bouncer)
WARNING: psql version 9.1, server version 1.5.
         Some psql features might not work.
Type "help" for help.

pgbouncer=# show help;
NOTICE:  Console usage
DETAIL:  

        SHOW  HELP|CONFIG|DATABASES|POOLS|CLIENTS|SERVERS|VERSION
        SHOW  STATS|FDS|SOCKETS|ACTIVE_SOCKETS|LISTS|MEM
        SHOW  DNS_HOSTS|
DNS_ZONES
        SET key = arg
        RELOAD
        PAUSE [ ]
        RESUME [ ]
        KILL              SUSPEND
        SHUTDOWN
SHOW


2. 管理pgbouncer常用命令

1)SHOW HELP查看:

[postgres@localhost config]$ psql -h 127.0.0.1 -p 666 -U u_kenyon pgbouncer Password for user u_kenyon:
psql (9.1.2, server 1.5.2/bouncer)
WARNING: psql version 9.1, server version 1.5.
Some psql features might not work.
Type “helpfor help.
pgbouncer=# show help;
NOTICE: Console usage
DETAIL:
SHOW  HELP|CONFIG|DATABASES|POOLS|CLIENTS|SERVERS|VERSION
SHOW  STATS|FDS|SOCKETS|ACTIVE_SOCKETS|LISTS|MEM
SHOW  DNS_HOSTS|DNS_ZONES
SET key = arg
RELOAD
PAUSE [ ]
RESUME [ ]
KILL SUSPEND
SHUTDOWN
SHOW如果在pgbouncer.ini文件進(jìn)行了參數(shù)修改,則使用以下命令重新加載即可:
pgbouncer=# RELOAD;

2) 查看配置文件:

pgbouncer=# show config;
              key                     |                            value                             | changeable
----------------------------------+------------------------------------------------------+------------
 job_name                         | pgbouncer                                                | no
 conffile                             | pgbouncer.ini                                            | yes
 logfile                               | /home/postgres/pgbouncer/pgbouncer.log | yes
 pidfile                               | /home/postgres/pgbouncer/pgbouncer.pid | no
 listen_addr                        | 127.0.0.1                                                 | no
 listen_port                         | 1999                                                        | 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                             | /home/postgres/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
 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                        | u_kenyon                                                         | yes
 stats_users                          | | yes
 stats_period                         | 60                                                         | yes
 log_connections                   | 1                                                         | yes
 log_disconnections               | 1                                                         | yes
 log_pooler_errors                 | 1                                                         | yes
(56 rows)

本次測試環(huán)境修改的參數(shù)不多,還有其他參數(shù)如server_idle_timeout,max_connections也比較重要,后期再寫。
使用reload可以不用重啟pgbouncer而使修改的參數(shù)生效

pgbouncer=# reload;

RELOAD

pgbouncer=#

使用reload可以不用重啟pgbouncer而使修改的參數(shù)生效

pgbouncer=# reload;

RELOAD

pgbouncer=#


3) 管理命令

在連接池端看連接數(shù):

在DB端看連接數(shù):

f_game=> select count(1) from pg_stat_activity;
count
---------------------
 2
 (1 row)

只有2個(gè),看來池的效果已經(jīng)初顯成效,可預(yù)計(jì)高并發(fā)的時(shí)候池連接的可重復(fù)性使用,實(shí)際連接到DB端的進(jìn)程并不是很多.

3. Java 連接 postgresql生效

那么要如何使程序連接生效呢?比如java web程序
之前我們連接數(shù)據(jù)庫在java 配置文件采用的連接是:
這里我們改成 jdbc:postgresql://localhost:5433/server_main,和pgbouncer配置文件一致。賬號(hào)密碼為 user.txt 里面的賬號(hào)密碼對。這里其實(shí)就是將連接postgresql 通過pgbouncer來管理。

通過pgbouncer數(shù)據(jù)庫show clients; 和 server_main 數(shù)據(jù)庫中select count (1) from pg_stat_activity;可以看到,DB的連接大幅下降了,轉(zhuǎn)到pgbouncer了。


4. 其他

注意使用psql連接工具,通過pgbouncer連接到數(shù)據(jù)庫后,如果使用c dbname,切換數(shù)據(jù)庫時(shí),會(huì)自動(dòng)切換到pgbouncer中配置的用戶和數(shù)據(jù)庫,具體如下圖所示:


五. 常用命令

首先是登錄了pgbouncer 的數(shù)據(jù)庫,其次具有執(zhí)行這些命令的權(quán)限

1. 通過admin用戶連接pgbouncer查看配置:

psql -h 127.0.0.1 -p 6000 -U user pgbouncer

pgbouncer=# show config;

2. 通過admin用戶連接pgbouncer查看運(yùn)行情況:

show stats;   #查看連接池的狀態(tài)信息

pgbouncer=# show stats;

database :數(shù)據(jù)庫名稱

total_requests:
pgbouncer匯聚SQL請求的總數(shù)

total_received:
 pgbouncer 接收網(wǎng)絡(luò)請求總字節(jié)數(shù)

total_sent::
pgbouncer 發(fā)送到網(wǎng)絡(luò)的總字節(jié)數(shù)

total_query_time:
pgbouncer 連接到PG數(shù)據(jù)庫所使用的總時(shí)間數(shù),單位微秒

avg_req:
上一個(gè)時(shí)刻,每秒請求平均數(shù)

avg_recv:
平均每秒鐘在客戶端那接收到的字節(jié)數(shù)

avg_sent:
平均每秒發(fā)送到客戶端的字節(jié)數(shù)

avg_query:
每微秒平均查詢數(shù)

show servers;  列出數(shù)據(jù)庫與pgbouncer之間連接,
type: S 表示服務(wù)器
user: pgbouncer 連接數(shù)據(jù)庫服務(wù)器的用戶名
database: 所連接的數(shù)據(jù)庫名
state: pgbouncer 連接服務(wù)器的連接狀態(tài) (active ,used , idle )
addr:postgresql 服務(wù)器的地址
port : postgresql監(jiān)聽的端口
local_addr :當(dāng)前pgboucer 所在服務(wù)器的ip
local_port :連接在本地機(jī)器開啟的端口
connect_time : 連接創(chuàng)建的時(shí)間
request_time: 最后一個(gè)請求發(fā)出的時(shí)間
ptr: 本連接的一個(gè)內(nèi)部對象地址,作為唯一的ID標(biāo)示
link: 客戶端連接服務(wù)器的配對地址
show clients; 客戶端連接pgbouncer 的狀態(tài)信息列出客戶端及客戶端連接狀態(tài)
type:C,表示客戶端
user:客戶端連接的用戶
database:數(shù)據(jù)庫名
state:客戶端連接的狀態(tài) active、used、waiting或者idle之一
addr:客戶端的 IP 地址
port:客戶端連接去的端口
local_addr:本地機(jī)器上連接到的對端地址
local_port:本地機(jī)器上的連接到的對端端口
connect_time:最后的客戶端連接的時(shí)間戳
request_time:最后的客戶端請求的時(shí)間戳
ptr:這個(gè)連接的內(nèi)部對象的地址,用做唯一 ID
link:這個(gè)客戶端連接對應(yīng)的服務(wù)器的地址
show pools; 列出連接池,查看連接池中連接的狀態(tài)信息
database:數(shù)據(jù)庫名
user:用戶名
cl_active:當(dāng)前 active (活躍)的客戶端連接的個(gè)數(shù)
cl_waiting:當(dāng)前 waiting (等待)的客戶端連接個(gè)數(shù)
sv_active:當(dāng)前 active (活躍)的服務(wù)器連接個(gè)數(shù)
sv_idle:當(dāng)前 idle (空閑) 的服務(wù)器連接個(gè)數(shù)
sv_used:當(dāng)前 used (在使用)的服務(wù)器連接個(gè)數(shù)
sv_tested:當(dāng)前 tested (測試過)的服務(wù)器連接個(gè)數(shù)
sv_login:當(dāng)前 login (登錄)到 PostgreSQL 服務(wù)器的個(gè)數(shù)
maxwait:隊(duì)列中第一個(gè)(最老的那個(gè))客戶端等待的時(shí)間長度,單位是秒.如果這個(gè)數(shù)值開始上升,那么就意味著當(dāng)前的連接池中的服務(wù)器處理請求的速度不夠快.原因可能是服務(wù)器過載,也可能只是 pool_size 太小
show lists ;  顯示連接池的計(jì)數(shù)信息
databases:數(shù)據(jù)庫的個(gè)數(shù)
users:用戶的個(gè)數(shù)
pools:連接池的個(gè)數(shù)
free_clients:空閑客戶端的個(gè)數(shù)
used_clients:已用的客戶端的個(gè)數(shù)
login_clients:處于已登錄狀態(tài)的客戶端個(gè)數(shù)
free_servers:空閑服務(wù)器個(gè)數(shù)
used_servers:已用服務(wù)器個(gè)數(shù)
show users;
show databases;  列出pgbouncer數(shù)據(jù)庫別名及相關(guān)數(shù)據(jù)庫
name:已配置的數(shù)據(jù)庫名字記錄
host:pgbouncer 連接到的主機(jī)名
port:pgbouncer 連接到的端口號(hào)
database:pgbouncer 實(shí)際連接的數(shù)據(jù)庫名
force_user:當(dāng)用戶是連接字串的一部分的時(shí)候,在 pgbouncer 和 PostgreSQL 之間的連接會(huì)強(qiáng)制成給出的用戶,不管 client user 是什么
pool_size:最大的服務(wù)器端連接數(shù)目
show fds; 內(nèi)部命令 - 顯示正在使用的文件描述符列表以及附加到它們的內(nèi)部狀態(tài)。
顯示正在使用的 fd 列表如果連接的用戶的用戶名是 “pgbouncer”,那么通過 unix socket 連接,并且和運(yùn)行的進(jìn)程有同樣的 UID,實(shí)際的 fd 列表是通過這個(gè)連接傳遞的這個(gè)機(jī)制用于做在線重啟。
fd:文件描述符的數(shù)字值
task:pooler,client 或 server 之一
user:使用該 FD 的連接用戶
database:使用該 FD 的連接的數(shù)據(jù)庫
addr:使用該 FD 的連接的 IP 地址,如果使用的是 unix socket,就是 unix
port:使用該 FD 的連接的端口號(hào)
cancel:這個(gè)連接的取消鍵字
link:對應(yīng)的服務(wù)器/客戶端的 fd如果為 idle (空閑)則為 NULL
show config;查看所有的配置信息
show dns_hosts;
show dns_zones;

#其余運(yùn)行參數(shù)可以通過如下命令查看

pgbouncer=# show help;

SHOW STATS_TOTALS;
SHOW STATS的子集顯示總值(total_)。;
SHOW STATS_AVERAGES;  SHOW STATS的子集顯示平均值(avg_)。


3. 進(jìn)程控制命令

PAUSE[db]:

這個(gè)命令嘗試終止所有的到服務(wù)器端連接,首先會(huì)等待所有的查詢都完成后,這個(gè)命令只有等到所有的查詢都結(jié)束時(shí)才會(huì)返回,用于數(shù)據(jù)庫重啟。如果有指定[db] 則是終止指定的數(shù)據(jù)庫;

KILL db:

馬上終止指定數(shù)據(jù)庫的客戶端跟服務(wù)器端的連接。
suspend:

刷新所有的套接字緩沖區(qū),pgbouncer 將停止對其的監(jiān)聽,這個(gè)命令只有將所有的緩沖區(qū)都清空后才會(huì)返回。用于pgbouncer 在線重啟

resume [db]:

這個(gè)命令配合 pause 跟 suspend 使用的,解除pgbouncer 的終止?fàn)顟B(tài)

shutdown:

關(guān)閉pgbouncer

reload:

重載配置文件,并更新所有的已更改的設(shè)置

DISABLE:

拒絕指定數(shù)據(jù)庫上所有新客戶端連接

ENALBLE:

準(zhǔn)許之前DISABLE命令之后的新客戶端連接

4. PgBouncer連接類型

會(huì)話池連接:
即以一個(gè)session為生命期,當(dāng)客戶端斷開的時(shí)候,才斷開并釋放連接回連接池
事務(wù)連接:
服務(wù)器連接只是在一個(gè)事務(wù)的過程里賦予客戶端的
語句連接:
在每個(gè)查詢結(jié)束之后,服務(wù)器的連接都會(huì)立即放回連接池。在這種模式下將不允許多語句的事務(wù)。否則,會(huì)給出如下提示,比如

test=# begin;
 ERROR: Long transactions not allowed
   server closed the connection unexpectedly
   This probably means the server terminated abnormally
   before or while processing the request.
 The connection to the server was lost. Attempting reset: Succeeded.

5. 客戶端連接方式

這里我簡單說明一下客戶端不同連接方式時(shí)服務(wù)器端的處理方式,以perl中為例:

$dbh = DBI -> connect(dbi:Pg:dbname=test;host=127.0.0.1;port=6000, postgres, ) or die

$DBI::errstr;

客戶端為AutoCommit時(shí),transaction類型 = statements類型
pool類型為transaction類型,如果客戶端不為AutoCommit時(shí),必須顯示Commit,否則連接不釋放
pool類型為statements類型時(shí),連接不支持長語句,因此客戶端必須AutoCommit,否則依然會(huì)報(bào)錯(cuò)
AutoCommit配置為:
{AutoCommit => 0}

6. 連接參數(shù)配置及客戶端狀態(tài)

max_client_conn
這個(gè)為允許客戶端連接的最大數(shù)目
你可以通過show clients進(jìn)行查看,當(dāng)客戶段連接大于此設(shè)置時(shí),客戶端會(huì)得到類似如下信息:
psql: ERROR:  no more connections allowed
default_pool_size
這個(gè)為當(dāng)前連接池中允許的最大處理連接
比如default_pool_size=3,如果在連接池沒有空余連接的情況下,如果已經(jīng)連接的客戶端嘗試通過PgBouncer向后端執(zhí)行查詢請求,
則客戶端會(huì)一直處理等待狀態(tài),當(dāng)有空余的連接釋放時(shí),比如其他的客戶端斷開連接時(shí),PgBouncer才會(huì)把此請求放如連接池中,
向后端提出服務(wù)請求,后端收到請求后,才執(zhí)行請求返回結(jié)果,比如
template1=# select * from test;


六. pgboucher日志


in b/s:這個(gè)比較好讀懂,每秒讀入字節(jié)數(shù)。
 out b/s:和in b/s一樣,表示每秒讀出的字節(jié)數(shù)。
 query us:平均每個(gè)查詢話費(fèi)的時(shí)間,單位微秒。us應(yīng)該是used的縮寫。
 wait time : 等待耗時(shí) 微秒
 xacts/s: 每秒多少個(gè)事務(wù)操作
 queries/s:每秒多少次請求數(shù)
 xact  us:每個(gè)事務(wù)耗時(shí)多少微秒
 還可以查看 pgbouncer庫上的  SHOW STATS_TOTALS
 
END


更多精彩干貨分享

點(diǎn)擊下方名片關(guān)注

IT那活兒

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/129811.html

相關(guān)文章

  • 構(gòu)建可擴(kuò)展PostgreSQL解決方案

    摘要:這可以通過負(fù)載平衡來實(shí)現(xiàn)數(shù)據(jù)分片當(dāng)問題不是并發(fā)查詢的數(shù)量,而是數(shù)據(jù)庫的大小和單個(gè)查詢的速度時(shí),可以實(shí)現(xiàn)不同的方法。 showImg(https://segmentfault.com/img/remote/1460000018875091); 來源 | 愿碼(ChainDesk.CN)內(nèi)容編輯 愿碼Slogan | 連接每個(gè)程序員的故事 網(wǎng)站 | http://chaindesk.cn...

    jonh_felix 評(píng)論0 收藏0
  • 構(gòu)建可擴(kuò)展PostgreSQL解決方案

    摘要:這可以通過負(fù)載平衡來實(shí)現(xiàn)數(shù)據(jù)分片當(dāng)問題不是并發(fā)查詢的數(shù)量,而是數(shù)據(jù)庫的大小和單個(gè)查詢的速度時(shí),可以實(shí)現(xiàn)不同的方法。 showImg(https://segmentfault.com/img/remote/1460000018875091); 來源 | 愿碼(ChainDesk.CN)內(nèi)容編輯 愿碼Slogan | 連接每個(gè)程序員的故事 網(wǎng)站 | http://chaindesk.cn...

    FrozenMap 評(píng)論0 收藏0
  • Python Enclosing作用域、閉包、裝飾器話聊下篇

    摘要:作用域閉包裝飾器話聊下篇作用域閉包裝飾器的基礎(chǔ)篇,請看作用域閉包裝飾器話聊上篇我經(jīng)常看到有人的裝飾器是帶參數(shù)的,這又是咋回事呢這個(gè)其實(shí)很簡單的,你還記得上次我說相當(dāng)于那么相當(dāng)于也就是說,返回的是一個(gè)裝飾器函數(shù),然后再去裝飾其他函數(shù)。 Python Enclosing作用域、閉包、裝飾器話聊下篇 Python Enclosing作用域、閉包、裝飾器的基礎(chǔ)篇,請看Python Enclos...

    DirtyMind 評(píng)論0 收藏0
  • Spring Boot [配置-下篇]

    摘要:進(jìn)行異常的捕捉與錯(cuò)誤信息頁面的定制。告訴,這是一個(gè)對象,該對象應(yīng)該被注冊為在應(yīng)用程序上下文中的。不同框架的不同配置這里以作為演示默認(rèn)情況下,保護(hù)已啟用。你必須配置包含令牌的所有的網(wǎng)頁來工作。該命名結(jié)構(gòu)旨在幫你找到需要的。 導(dǎo)讀: 在上篇文章中我們了解到Spring Boot 的一些常用的外部化配置,在本篇中我們將會(huì)繼續(xù)對類的配置進(jìn)行了解 一個(gè)簡單的例子[錯(cuò)誤頁面定制]: 在 Spr...

    StonePanda 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<