Postgresql
應該為 1000 個使用者的 Jira 系統設置多少池連接大小?
對於 Jira 系統,如果使用 Jira 的預設連接配置如下:
<?xml version="1.0" encoding="UTF-8"?> <jira-database-config> <name>defaultDS</name> <delegator-name>default</delegator-name> <database-type>postgres72</database-type> <schema-name>public</schema-name> <jdbc-datasource> <url>jdbc:postgresql://[IP]:5432/jiradb</url> <driver-class>org.postgresql.Driver</driver-class> <username>jiradbuser</username> <password>{PASSWORD}</password> <pool-min-size>20</pool-min-size> <pool-max-size>20</pool-max-size> <pool-max-wait>30000</pool-max-wait> <validation-query>select 1</validation-query> <min-evictable-idle-time-millis>60000</min-evictable-idle-time-millis> <time-between-eviction-runs-millis>300000</time-between-eviction-runs-millis> <pool-max-idle>20</pool-max-idle> <pool-remove-abandoned>true</pool-remove-abandoned> <pool-remove-abandoned-timeout>300</pool-remove-abandoned-timeout> <pool-test-on-borrow>false</pool-test-on-borrow> <pool-test-while-idle>true</pool-test-while-idle> </jdbc-datasource> </jira-database-config>
在 postgresql 的配置文件中:
postgresql.conf
max_connections = 300 shared_buffers = 80MB
在 /etc/sysctl.conf 文件中:
kernel.shmmax=100663296
在測試階段,它可以工作。但是在生產環境中,1000個使用者使用這個系統,如果一個app server服務500個使用者,在postgresql.conf文件中設置多少pool connection size比較好呢?而且,如果使用 pgbouncer,它可以減少多少連接?
答案取決於您的數據庫系統上有多少個核心、它可以處理多少並發 I/O 請求以及應用程序使用連接時活動時間與空閒時間的比率。
我會從最多 20 個會話開始。