Thread: multiple postgres processes after establishing tcp connection

multiple postgres processes after establishing tcp connection

From
Andrey Lizenko
Date:
Hello,
PostgreSQL 9.4.4 started in usual way
[postgres@ubuntu12-vm][20150731 06:26:06]:/db2/master$ pg_ctl start -D /db2/master/ -l serverlog
server starting

I can see root process for this then:
[postgres@ubuntu12-vm][20150731 06:38:36]:/db2/master$ ps -ef | grep "bin/postgres" | grep -v grep
postgres  5152     1  0 06:28 pts/0    00:00:00 /opt/postgres/9.4.4/bin/postgres -D /db2/master

If only simple telnet connection started:
[postgres@ubuntu12-vm][20150731 06:30:24]:/db2$ telnet 127.0.0.1 5551
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
 
new postgres process appeared as a child of the first one.
[postgres@ubuntu12-vm][20150731 06:38:42]:/db2/master$ ps -ef | grep "bin/postgres" | grep -v grep
postgres  5152     1  0 06:28 pts/0    00:00:00 /opt/postgres/9.4.4/bin/postgres -D /db2/master
postgres  6358  5152  0 06:39 ?        00:00:00 /opt/postgres/9.4.4/bin/postgres -D /db2/master


Is this an attempt to create new worker?
No records (presumably) in pg_stat_activity, only "invalid length of startup packet" after closing telnet session.


--
Regards, Andrey Lizenko

Re: multiple postgres processes after establishing tcp connection

From
Jim Nasby
Date:
On 7/31/15 5:52 AM, Andrey Lizenko wrote:
> If only simple telnet connection started:
>
>     [postgres@ubuntu12-vm][20150731 06:30:24]:/db2$ telnet 127.0.0.1 5551
>     Trying 127.0.0.1...
>     Connected to 127.0.0.1.
>     Escape character is '^]'.
>
> new postgres process appeared as a child of the first one.
>
>     [postgres@ubuntu12-vm][20150731 06:38:42]:/db2/master$ ps -ef | grep
>     "bin/postgres" | grep -v grep
>     postgres  5152     1  0 06:28 pts/0    00:00:00
>     /opt/postgres/9.4.4/bin/postgres -D /db2/master
>     postgres  6358  5152  0 06:39 ?        00:00:00
>     /opt/postgres/9.4.4/bin/postgres -D /db2/master
>
>
>
> Is this an attempt to create new worker?
> No records (presumably) in pg_stat_activity, only "invalid length of
> startup packet" after closing telnet session.

To be expected. There's a bunch of startup stuff that happens before a
backend shows up in pg_stat_activity. See BackendStartup() for details.
In particular, BackendInitialize() is what collects the startup packet
from the port before calling BackendRun() which calls PostgresMain()
which is what finally registers the backend in the proc array.
--
Jim Nasby, Data Architect, Blue Treble Consulting, Austin TX
Data in Trouble? Get it in Treble! http://BlueTreble.com