select * from pg_stat_activity 명령을 이용하여 현재 접속 중인 프로세스를
체크하고 있습니다.
그런데, 클라이언트 쪽 컴퓨터가 강제로 종료 되면 접속 중인 프로세스로
계속 남아 있습니다.
그리고 그 프로세스를 강제로 죽이지 않으면 계속 남아 있습니다.
클라이언트 쪽 컴퓨터가 접속을 종료하지 못하고 커졌을 때
그것을 알 수 있는 방법은 없을까요?
일반적으로 그 부분에 대한 연결 정리는 커널이 알아서 하라
이것이 PostgreSQL의 정책입니다.
IRC 프로토콜처럼 ping-pong 형태의 keepalive 처리는 하지 않습니다.
즉, 다시 말해서, 끊겼음에도 불구하고 계속 연결되어있다. 이것을 어떻게 어떻게 처리하고 싶다.
딱히 방법이 보이지는 않습니다.
그저 커널이 정리해줄 때까지 기다리는 수 밖에는
프로세스가 작업중인 경우 작업을 마치는 것이 맞을 듯 하고요.
idle 상태인 경우 워닝을 로그에 남기면서 프로세스가 죽는 것으로 알고 있습니다.
계속 죽지 않고 남아 있으면서 다른 일도 처리하지 않고 쌓이는 상황이라면 뭔가 이상이 있는 듯 하네요.