$ 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:57504
UDP 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가 선택된 것으로 의심됩니다.