/etc/postgresql/9.3/main/postgresql.confc++
This SQL will help yousql
select max_conn,used,res_for_super,max_conn-used-res_for_super res_for_normal from (select count(*) used from pg_stat_activity) t1, (select setting::int res_for_super from pg_settings where name=$$superuser_reserved_connections$$) t2, (select setting::int max_conn from pg_settings where name=$$max_connections$$) t3
Result:shell
max_conn | used | res_for_super | res_for_normal ---------+------+---------------+---------------- 100 | 2 | 3 | 95 (1 row)
You can put this in shell:bash
#!/bin/bash for (( c=1; c<=3600; c++ )) do gsql -U pgdba -W pgdba -p 6432 -c "sql" >> /home/pgdba/res_data.log sleep 1 # once per second done
or you can record the results into a table, then executeapp
postgres=# copy restbl to '/home/pgdba/res.csv' csv header;
to get result csv file.ide
https://stackoverflow.com/a/32584211/2803340post
Just increasing max_connections
is bad idea. You need to increase shared_buffers
and kernel.shmmax
as well.ui
Considerationsthis
max_connections
determines the maximum number of concurrent connections to the database server. The default is typically 100 connections.idea
Before increasing your connection count you might need to scale up your deployment. But before that, you should consider whether you really need an increased connection limit.
Each PostgreSQL connection consumes RAM for managing the connection or the client using it. The more connections you have, the more RAM you will be using that could instead be used to run the database.
A well-written app typically doesn't need a large number of connections. If you have an app that does need a large number of connections then consider using a tool such as pg_bouncer which can pool connections for you. As each connection consumes RAM, you should be looking to minimize their use.
How to increase max connections
1. Increase max_connection
and shared_buffers
in /var/lib/pgsql/data/postgresql.conf
change
max_connections = 100 shared_buffers = 24MB
to
max_connections = 300 shared_buffers = 80MB
The shared_buffers
configuration parameter determines how much memory is dedicated to PostgreSQL to use for caching data.
2. Change kernel.shmmax
You would need to increase kernel max segment size to be slightly larger
than the shared_buffers
.
In file /etc/sysctl.conf
set the parameter as shown below. It will take effect when postgresql
reboots (The following line makes the kernel max to 96Mb
)
kernel.shmmax=100663296
References
How to increase max connections in postgres