FATAL: remaining connection slots are reserved for non-replication superuser connections

Started by Patrick Babout 9 years ago4 messagesgeneral
Jump to latest
#1Patrick B
patrickbakerbr@gmail.com

Hi guys,

I get these messages at least once a day in my Prod environment:

FATAL: remaining connection slots are reserved for non-replication
superuser connections

I do not have a DB pooler and my max_connections is 200. However, max
connections for my PHP Application is 120.

My server has 128GB and SSD 10K iops disks (Amazon EBS).

Can you guys please outlines me the steps to troubleshoot this?

Interesting is that I didn't see any IO/CPU limitation on my server.

I'm currently running a Postgres 9.2 - one master and one slave streaming
replication.

Thanks

Patrick

#2Steve Crawford
scrawford@pinpointresearch.com
In reply to: Patrick B (#1)
Re: FATAL: remaining connection slots are reserved for non-replication superuser connections

On Tue, Feb 7, 2017 at 6:52 PM, Patrick B <patrickbakerbr@gmail.com> wrote:

Hi guys,

I get these messages at least once a day in my Prod environment:

FATAL: remaining connection slots are reserved for non-replication
superuser connections

I do not have a DB pooler and my max_connections is 200. However, max
connections for my PHP Application is 120.

My server has 128GB and SSD 10K iops disks (Amazon EBS).

Can you guys please outlines me the steps to troubleshoot this?

Interesting is that I didn't see any IO/CPU limitation on my server.

I'm currently running a Postgres 9.2 - one master and one slave streaming
replication.

Thanks

Patrick

Something is using too many connections.

I may be wrong but I'm unaware of a limit on connections from PHP except
when you are using persistent connections. Since each PHP script is it's
own process, it can create one or more connections. I'd check to be sure
that every PHP script you have is, indeed, using pg_pconnect and not
pg_connect. That missing "p" could be hard to spot. I'm assuming, of
course, that you are sure that your PHP script are the only things that can
connect - no scripts, backups, etc. are consuming connections.

But generally I'd advise using pg_bouncer or a similar pooler which can
deal with a mix of connections from persistent and non-persistent
connections from one or multiple hosts.

Cheers,
Steve

#3Tatsuo Ishii
t-ishii@sra.co.jp
In reply to: Steve Crawford (#2)
Re: FATAL: remaining connection slots are reserved for non-replication superuser connections

Something is using too many connections.

I may be wrong but I'm unaware of a limit on connections from PHP except
when you are using persistent connections. Since each PHP script is it's
own process, it can create one or more connections. I'd check to be sure
that every PHP script you have is, indeed, using pg_pconnect and not
pg_connect. That missing "p" could be hard to spot. I'm assuming, of
course, that you are sure that your PHP script are the only things that can
connect - no scripts, backups, etc. are consuming connections.

You can disable persistent connection feature of pg_pconnect by
tweaking php.ini.

Best regards,
--
Tatsuo Ishii
SRA OSS, Inc. Japan
English: http://www.sraoss.co.jp/index_en.php
Japanese:http://www.sraoss.co.jp

--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

#4Patrick B
patrickbakerbr@gmail.com
In reply to: Tatsuo Ishii (#3)
Re: FATAL: remaining connection slots are reserved for non-replication superuser connections

2017-02-08 16:27 GMT+13:00 Tatsuo Ishii <ishii@sraoss.co.jp>:

Something is using too many connections.

I may be wrong but I'm unaware of a limit on connections from PHP except
when you are using persistent connections. Since each PHP script is it's
own process, it can create one or more connections. I'd check to be sure
that every PHP script you have is, indeed, using pg_pconnect and not
pg_connect. That missing "p" could be hard to spot. I'm assuming, of
course, that you are sure that your PHP script are the only things that

can

connect - no scripts, backups, etc. are consuming connections.

You can disable persistent connection feature of pg_pconnect by
tweaking php.ini.

@Steven, yes, my developer said we are using persistent connections.

However, he checked and he is using pg_connect instead of pg_pconnect.

Patrick