pgbouncer 常用 配置項詳解

2021-09-18 06:00:02 字數 3648 閱讀 7028

參考 《postgresql修煉之道》之pgbouncer

配置檔案分為[databases] 和 [pgbouncer]兩部分,這個前面說過。現在我們來詳細講解一下裡面的配置。

在上面的部分我們已經看到了一部分的[databases]部分的引數配置,都是以鍵值對的形式出現的,例如dbname、host、port、user、password,這幾個引數都比較好理解。還有幾個額外的配置我們接著看一下:

(1) pool_size 用來配置連線池的大小。連線池的含義上面說過,如果沒有這個值則使用[pgbouncer]部分的default_pool_size的值。

(2)connect_query :後面跟乙個sql語句字串,用於探測這個連線是否正常,如果執行sql語句出錯,則換乙個連線。

(3)client_encoding:指定連線的客戶端使用的字符集編碼

(4)datestyle:指定日期型別

(5)timezone:指定時區。

[pgbouncer]部分的配置

這個部分的配置項比較多,主要分為下面幾類:

通用配置項

日誌配置項

控制介面訪問控制配置項

連線健康檢查和超時配置項

危險的超時配置項

底層網路配置項

通用配置

logfile 指定日誌檔案,預設值是/var/log/pgbouncer/pgbouncer.log

pidfile 指定pid檔案位置,預設值是/var/run/pgbouncer/pgbouncer.pid

listen_addr  監聽的位址,預設值是127.0.0.1,可以使用*號表示監聽所有ip位址。

listen_port 監聽的埠,預設值是6432

unix_socket_dir 指定unix socket檔案的目錄,預設為/tmp目錄

unix_socket_mode 指定unix socket檔案的許可權,預設值為0777

unix_socket_group 指定unix socket檔案的組,預設無

user  指定啟動pgbouncer的使用者名稱,windows系統不支援此設定

auth_type 認證的型別,預設是trust,其他值包括md5,crypt,plain,any,hba。用的較多的是md5

auth_file 認證檔案的位置,預設值是/etc/pgbouncer/userlist.txt

pool_mode 指定池的模式,預設是session模式,還可以是transaction和statement

max_client_conn  允許的最大連線數

default_pool_size  預設的池大小,預設值20

min_pool_size  最小的池大小,每個連線池至少會向後端資料庫保持多少個連線

reserve_pool_size  連線池的保留連線數

reserve_pool_timeout  保留連線的超時時間

server_round_robin  負載均衡的方式是否設定為「round robin」,預設為關閉,即後進先出

ignore_startup_parameters 預設情況pgbouncer只會跟蹤一些預設引數,並且能檢測這些引數的變化,保持這些引數和客戶端的一致。在這個配置後面跟的配置後被pgbouncer忽略,不會被檢查。

disable_pqexec  是否禁止簡單查詢協議,預設值為0。簡單查詢協議允許乙個請求傳送多個sql,容易導致sql注入攻擊。

日誌配置項:

syslog  是否開啟syslog,windows下開啟eventlog,預設值為0,表示不開啟。

syslog_ident  預設為pgbouncer

syslog_facility

log_connections  是否記錄連線成功的日誌,預設值為1,表示記錄

log_disconnections 是否記錄斷開連線的日誌,預設值為1,表示記錄

log_pooler_errors 連線池法網客戶端的錯誤是否記錄在日誌中,預設值為1,表示記錄

stats_period 把彙總的統計資訊寫入日誌的時間週期,預設是60s

控制介面訪問控制配置項:

admin_users  管理使用者名稱,預設值是postgres

stats_users  允許連線到控制介面,檢視連線池唯讀資訊的使用者列表。可以執行除「show fds」以外的其他「show」命令

server_reset_query

server_check_delay 空閒的連線多長時間進行一次健康檢測,判斷連線是否可用。如果設定為0,則立即檢測,預設值為30s

server_check_query,進行健康檢查的sql語句,如果為0,表示不檢測,預設值為「select 1;」

server_lifetime  連線的存活時間,連線超過這個時間就會被關閉,預設為3600,設定為0表示只使用一次。

server_idle_timeout  連線的idle時間,超過此時間,連線會被關閉。預設為600

server_connect_timeout  後端資料庫的login時間超過這個值就會被關閉。預設為15s

server_login_retry  傳教到後端資料庫的連線失敗後,等多長時間後重試,預設為15s

client_login_timeout  客戶端與pgbouncer建立連線後,如果無法在這段時間內完成登入,那麼連線會斷開,預設為60s

危險超時配置項

指的是為防止一些未知錯誤或者原因導致系統卡住的針對性配置。

query_timeout  允許超過該時間值的sql會被斷開,應該比sql實際的執行時間稍長,也需要比資料庫的statement_timeout引數值更大。為了應付一些未知的網路問題。預設為0.0,禁止使用

query_wait_timeout  請求在佇列中等待被執行的最長時間,如果超過該時間還沒有分配到連線,就會斷開。預設為0,禁止使用。

client_idle_timeout  客戶端連線空閒超過該時間,則斷開連線。預設值為0,禁止使用

idle_transaction_timeout 客戶端啟動事務後,超過這個時間沒有結束事務,則關閉這個客戶端連線。預設值為0,禁止使用

底層網路連線配置

pkt_buf  用於網路包的內部緩衝區大小,會影響發出的tcp包的大小即記憶體的使用,預設值為2048,一般保持預設值

max_packet_size  通過pgbouncer最大的包大小,包可以是乙個sql,也可以是返回的結果,預設值是2147483647

listen_backlog  tcp監聽函式listen的backlog引數,預設值為128

sbuf_loopcnt   處理過程中,每個連線處理多少資料就切換到下乙個連線。預設為5,如果設定為0,表示不限制。不限制時,乙個連線傳送大量資料,另外的連線可能就會空閒,導致被結束掉。

tcp_defer_accept linux下,預設為45,其他平台為0。詳細解釋用man 7 tcp來檢視

tcp_socket_buffer  預設沒有設定

tcp_keepalive 是否以作業系統的預設值開啟基本的keepalive 設定,在linux下,作業系統的keepalive裡,預設值時tcp_keepidle=7200, tcp_keepintvl-75,tcp_keepcnt=9,其他作業系統型別,預設值為1

tcp_keepcnt  預設未設定

tcp_keepidle 預設未設定

tcp_keepintvl 預設未設定

Bean常用配置項

id bean id bean的唯一標識 class bean所指向的類 scope 作用域 seingleton 預設 單例,在乙個bean容器中只存在乙份 prototype 每次請求 每次使用 建立新的例項,destory方式不生效 request 每次http請求建立乙個例項且僅在當前req...

SpringBoot 常用配置項

本文介紹spring boot web開發最常用的配置項 web常用配置項 預設值說明 debug false 開啟 關閉除錯模式 server.port 8080 伺服器指令碼 server.servlet.context path 應用上下文 預設字符集編碼 spring.thymeleaf.c...

axios常用配置項

1 url 必寫 請求位址 2 method 請求方法,預設是get 3 baseurl 常用 baseurl會新增到url前 url是絕對位址除外 4 transformrequest transformrequest選項允許我們在請求傳送到伺服器之前對請求的資料做出一些改動 該選項只適用於以下請...