리눅스+postgre+자바로 운영되는 어플리케이션에서 버그가 났습니다.
자바 어플리케이션에서 트랜잭션을 시작하고나서 롤백이나, 커밋없이, 그냥 세션을 닫아버렸고,
그 트랜잭션의 프로세스가 남아 있던 상태 였습니다.
트랜잭션이 남아 있는 상태에서 매일 백업을 위해 vacumn을 하면 Access Exclusive Lock 가 걸려서 관련 테이블에 엑세스 하는 족족 멎어 버렸습니다.
급한 불을 끄기 위해 kill 을 사용해서 지웠습니다만, (지금은 어플리케이션을 수정해 문제가 없습니다만,..)
kill 프로세스를 하니 어플리케이션 전부를(세개의 어플리케이션이 돌아가고 있습니다.) 재 기동 하지 않으면 안되더군요.
제가 알고 싶은 부분은 kill 프로세스 로 하면 전체의 어플리케이션 을 재시작하지 않으면 안되는데
그렇게 하지않고 현재 트랜잭션의 프로세스만 죽이고 싶을때 어떻게 할가 하는것입니다.
(물론 재시작 없이 말이죠..)
postgre의 명령어나 쉘 명령어 아무거나 좋습니다. 알려주시면 감사하겠습니다.
|