본문 바로가기
DB/PostgreSQL

postgreSQL 쿼리중지, 테이블 lock, 작업중지, CPU100%

by 애플 로그 2021. 11. 16.
반응형

postgreSQL 쿼리중지, 테이블 lock, 작업중지, CPU100%

postgreSQL 에서 쿼리 수행시에 정상 수행이 되지 않고, backend에서 계속 수행중으로 남아 있는 케이스가 발견됬다.

테이블은 lock상태로 들어가며, 조회가 계속 안되고 수행 쿼리가 지속적으로 쌓이면서 문제가 발생했다. 

DB서버의 CPU를 확인해보니 98%가량 점유율이 올라가 있었으며, 어플리케이션의 수행 속도 또한 서비스하기 힘든 상태로 느려져 있었다.  이때 문제 해결을 위해서 진행 했던 방법들을 정리 해놓으려 한다.

 

[AWS RDS의 postgreSQL 서버의 cpu 상태 ]

 

lock 상태 확인 

SELECT * FROM pg_stat_activity ORDER BY query_start ASC;

pg_stat_activity 테이블을 조회해서 backend_start 의 값이 너무 오래 걸린 값을 찾는것이 중요하다.

query 컬럼을 확인하면 실제 조회된 쿼리내용도 볼수 있는데, 해당 쿼리를 분석 후 쿼리튜닝 혹은 베큠과 같은 조치도 필요 할수 있다. 

 

쿼리 수행중지

backend_start 또는 query_start 값을 확인하고 문제되는 쿼리를 확인했다면,

 

pid 컬럼을 확인하도록 한다. 해당 pid를 통해서 쿼리를 중지 시킬수 있다.

 

     -- SELECT pg_cancel_backend(pid번호);
     
     SELECT pg_cancel_backend(157444);

 

 

pg_cancel_backend의 명령어로도 쿼리 수행이 중지 되지 않을때

상위 명령까지 모두 중지 할수 있는 명령어를 수행 하도록 한다.

 

상위 쿼리명령 전부 종료

-- SELECT pg_terminate_backend(pid번호) FROM pg_stat_activity;

SELECT pg_terminate_backend(3209) FROM pg_stat_activity;

 

 

 

 

DB 관련 다른 글 보기 

 

postgreSQL index rebuild, REINDEX (인덱스 리빌드)

postgreSQL index rebuild, REINDEX (인덱스 리빌드) PostgreSQL REINDEX 명령이란 무엇입니까? 실제로 PostgreSQL 인덱스는 변경 될 수 있으며 소프트웨어 문제 또는 하드웨어 오류로 인해 index에 ..

www.appletong.com

 

 

 

ORACLE table lock 풀기 ( 오라클 테이블 락 풀기 )

ORACLE table lock 풀기 ( 오라클 테이블 락 풀기 ) 선행 조건 : 쿼리 수행시 system 권한이 있어야 한다. 수행 순서 : 1. lock 걸린 테이블 확인 해야한다. select * from dba_dml_locks; 2. sid,seria..

www.appletong.com

 

 

 

프로메테우스 그라파나 자바 어플리케이션 (3) 모니터링 화면

프로메테우스 그라파나 자바 어플리케이션 (3) 모니터링 화면 (1). Tomcat 서버를 설치 프로메테우스 그라파나 자바 어플리케이션 모니터링 (1) tomcat 설치 프로메테우스 그라파나 자바 어플리케이

www.appletong.com

 

'DB > PostgreSQL' 카테고리의 다른 글

postgressql lock 조회 및 해제  (0) 2022.08.23
postgreSQL index rebuild, REINDEX (인덱스 리빌드)  (0) 2021.04.12

댓글