国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

pgbouncer的簡單使用(下篇)

IT那活兒 / 3057人閱讀
pgbouncer的簡單使用(下篇)
相關閱讀:
王宇,公眾號:IT那活兒pgbouncer的簡單使用(上篇)


四. 啟動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/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 后臺運行

-R 在線重啟

-v 增加冗余信息,會消耗比較多的時間

-u 切換到指定的用戶啟動

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

-V 展示版本

-h 展示幫助命令

pgbouncer -V|-h

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


關閉命令
用管理員用戶登錄pgbouncer 數據庫 ,這個是一個虛擬庫,然后執行shutdown 命令

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


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

然后通過 postgresql 的psql登錄pgbouncer工具的數據庫pgbouncer,以便查看pgbouncer工具的狀態。
這里注意連接pgbouncer 要采用pgbouncer.ini配置的pgbouncer節的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

參數使用例子
連接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文件進行了參數修改,則使用以下命令重新加載即可:
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)

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

pgbouncer=# reload;

RELOAD

pgbouncer=#

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

pgbouncer=# reload;

RELOAD

pgbouncer=#


3) 管理命令

在連接池端看連接數:

在DB端看連接數:

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

只有2個,看來池的效果已經初顯成效,可預計高并發的時候池連接的可重復性使用,實際連接到DB端的進程并不是很多.

3. Java 連接 postgresql生效

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

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


4. 其他

注意使用psql連接工具,通過pgbouncer連接到數據庫后,如果使用c dbname,切換數據庫時,會自動切換到pgbouncer中配置的用戶和數據庫,具體如下圖所示:


五. 常用命令

首先是登錄了pgbouncer 的數據庫,其次具有執行這些命令的權限

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

psql -h 127.0.0.1 -p 6000 -U user pgbouncer

pgbouncer=# show config;

2. 通過admin用戶連接pgbouncer查看運行情況:

show stats;   #查看連接池的狀態信息

pgbouncer=# show stats;

database :數據庫名稱

total_requests:
pgbouncer匯聚SQL請求的總數

total_received:
 pgbouncer 接收網絡請求總字節數

total_sent::
pgbouncer 發送到網絡的總字節數

total_query_time:
pgbouncer 連接到PG數據庫所使用的總時間數,單位微秒

avg_req:
上一個時刻,每秒請求平均數

avg_recv:
平均每秒鐘在客戶端那接收到的字節數

avg_sent:
平均每秒發送到客戶端的字節數

avg_query:
每微秒平均查詢數

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

#其余運行參數可以通過如下命令查看

pgbouncer=# show help;

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


3. 進程控制命令

PAUSE[db]:

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

KILL db:

馬上終止指定數據庫的客戶端跟服務器端的連接。
suspend:

刷新所有的套接字緩沖區,pgbouncer 將停止對其的監聽,這個命令只有將所有的緩沖區都清空后才會返回。用于pgbouncer 在線重啟

resume [db]:

這個命令配合 pause 跟 suspend 使用的,解除pgbouncer 的終止狀態

shutdown:

關閉pgbouncer

reload:

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

DISABLE:

拒絕指定數據庫上所有新客戶端連接

ENALBLE:

準許之前DISABLE命令之后的新客戶端連接

4. PgBouncer連接類型

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

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. 客戶端連接方式

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

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

$DBI::errstr;

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

6. 連接參數配置及客戶端狀態

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


六. pgboucher日志


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


更多精彩干貨分享

點擊下方名片關注

IT那活兒

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/129811.html

相關文章

  • 構建可擴展PostgreSQL解決方案

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

    jonh_felix 評論0 收藏0
  • 構建可擴展PostgreSQL解決方案

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

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

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

    DirtyMind 評論0 收藏0
  • Spring Boot [配置-下篇]

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

    StonePanda 評論0 收藏0

發表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<