Para um sistema Jira, use a configuração de conexão padrão do Jira conforme abaixo:
<?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>
No arquivo de configuração do postgresql:
postgresql.conf
max_connections = 300
shared_buffers = 80MB
No arquivo /etc/sysctl.conf:
kernel.shmmax=100663296
Na fase de teste, pode funcionar. Mas no ambiente de produção, para 1000 usuários usam este sistema, se um servidor de aplicativos atende 500 usuários, quanto tamanho de conexão de pool é bom para definir no arquivo postgresql.conf? E, se usar o pgbouncer, quantas conexões ele pode ser reduzido?
A resposta depende de quantos núcleos você tem em seu sistema de banco de dados, quantas solicitações de E/S simultâneas ele pode manipular e qual é a proporção de tempo ativo versus tempo ocioso enquanto o aplicativo está usando uma conexão.
Eu começaria com um máximo de 20 sessões.