728x90
반응형
다음 명령어를 통해 postgresql 의 활성화되어있는 프로스를 확인해보면 Idle in transaction 상태가 보인다.
select * from pg_stat_activity;
찾아보니 이런 경우는 postgresql 에 transaction 이 잡혀있지만 아무런 동작도 하지 않으면 idle in transaction 상태가 된다고 한다.
이런 경우가 많이 발생하게 되면 connection 은 잡고있지만 아무것도 하지 않게 되어 리소스가 낭비된다.
이러한 문제를 해결하는 방법 중 하나는 다음과 같이 수동으로 해당 프로세스의 connection 을 terminate 해주어야 한다.
terminate 를 할 때에는 process id 인 pid 를 가져와 terminate 를 실행하면 된다.
select pg_terminate_backend(pid);
또한 idle_in_transaction_session_timeout 을 통해서 일정 시간이 지나면 자동으로 terminate 하도록 설정할 수 있다.
idle_in_transaction_session_timeout 이 어떻게 설정되어있는지 확인하려면 다음 명령어를 통해 확인할 수 있다.
show idle_in_transaction_session_timeout;
명령어를 통해 확인해보면 내가 사용중인 Postgresql 은 1d 로 하루가 지나면 session 이 끊어지도록 되어있다.
idle_in_transaction_session_timeout
-------------------------------------
1d
idle_in_transaction_session_timeout 값의 수정은 다음과 같이 진행할 수 있다.
alter system set idle_in_transaction_session_timeout='1min';
만약 값을 0 으로 설정한다면 사용하지 않는다는 것을 의미한다.
728x90
반응형
'데이터 엔지니어링 > Database' 카테고리의 다른 글
Postgresql auto increment 적용하기 (0) | 2024.02.16 |
---|---|
Postgresql 컬럼 기본값(default) 설정 (1) | 2023.10.05 |
Postgresql 과 MySQL 비교 (0) | 2023.08.10 |
Mysql OperationalError: (1205, 'Lock wait timeout exceeded; try restarting transaction') 에러 발생 (0) | 2023.07.06 |
Mysql 8 버전 Sequal Pro 접속 에러 (0) | 2023.04.14 |