对于 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 个会话开始。