postgresql 서버에 `localhost:57504`에서 `localhost:57504` UDP "연결"이 있는 이유는 무엇입니까?

postgresql 서버에 `localhost:57504`에서 `localhost:57504` UDP "연결"이 있는 이유는 무엇입니까?
$ sudo netstat -ap | grep postg
tcp        0      0 localhost:postgresql    0.0.0.0:*               LISTEN      1567/postgres       
udp        0      0 localhost:57504         localhost:57504         ESTABLISHED 1567/postgres       
unix  2      [ ACC ]     STREAM     LISTENING     27116    1567/postgres        /var/run/postgresql/.s.PGSQL.5432

postgresql 서버에 localhost:57504UDP localhost:57504"연결"이 있는 이유는 무엇입니까? 그게 무슨 뜻이야?

감사해요.

답변1

조금 파보면 이것이 통계 수집기입니다. 분명히 통계는 로컬 루프백(일명 localhost) UDP를 통해 게시됩니다. 이봐:http://www.neilconway.org/talks/hacking/ottawa/ottawa_slides.pdf. 기본적으로 PostgreSQL의 다른(백엔드) 하위 프로세스는 이 UDP 포트를 사용하여 통계 수집기에 통계를 보냅니다. 당신이 보고 있는 것은 메시지 수신을 기다리는 "수신" 소켓입니다.

포트 57504 예임시 포트. 즉, 누구도 이를 선택하지 않으며 런타임 시 무작위로 할당됩니다. 여기에 참고하세요: https://www.postgresql.org/message-id/[이메일 보호됨]

UDP는 연결에 신경 쓰지 않는다는 점에서 TCP와 매우 다릅니다. UDP 소켓은 사서함처럼 동작합니다. 어디에서나 메시지를 받아 각 메시지의 주소로 보냅니다. 따라서 원격 호스트와 원격 포트는 종종 무시될 수 있습니다.

UDP는 패킷이 수신되는지 여부에도 관심이 없습니다. 통계 수집기가 플러딩되더라도 백엔드가 통계 수집기를 기다리지 않기 때문에 UDP가 선택된 것으로 의심됩니다.

관련 정보