안녕하세요
AWS RDS Sql Server을 운영하고 있습니다. 문의 사항이 있어서 글을 남깁니다.
보통 락이 걸리면 대부분 cpu 사용량이 증가하거나 하여, 락이 걸리는 쿼리를 파악하여 KILL 처리를 하고는 하는데요.
-- 아래의 쿼리로 오래 실행되는 쿼리를 dbcc inputbuffer로 조회하여 KILL을 처리하고는 합니다. 근데 대부분 cpu 이슈지만 이런 경우는 처음이네요.
SELECT R.SESSION_ID
, STATUS
, WAIT_TYPE
, SUBSTRING(QT.TEXT, R.STATEMENT_START_OFFSET/2, (CASE WHEN R.STATEMENT_END_OFFSET = -1 THEN LEN(CONVERT(NVARCHAR(MAX), QT.TEXT)) * 2
ELSE R.STATEMENT_END_OFFSET
END - R.STATEMENT_START_OFFSET)/2) AS QUERY_TEXT
, QT.DBID
, QT.OBJECTID
, R.CPU_TIME
, R.TOTAL_ELAPSED_TIME
, R.READS
, R.WRITES
, R.LOGICAL_READS
, R.SCHEDULER_ID
FROM SYS.DM_EXEC_REQUESTS R
CROSS APPLY SYS.DM_EXEC_SQL_TEXT(SQL_HANDLE) AS QT
WHERE R.SESSION_ID > 50
ORDER BY R.TOTAL_ELAPSED_TIME desc
이번 경우에는 cpu 사용량은 증가하지 않는데,
RDS 포털상에 보면 세션수가 급격히 늘어나, 신규세션이 생성이 잘 되지 않는 문제가 발생을 합니다. (첨부이미지)
이미 열려져 있는 쿼리분석기에서는 쿼리가 동작하지만, 신규로 쿼리 분석기를 생성하면 생성이 되지 않습니다. (매우 생성속도가 느려서 결국 ssms가 멈춰버리고 마네요)
혹시 이런경우가 있으신 경험자분들이 있으신지,
또 어떤부분을 의심해봐야 할지 감이 잡히질 않아 문의 드립니다.
읽어주셔서 감사합니다.
어플리케이션에서 사용하는 쿼리중 일부가 데드락이나 블러킹을 유발하는 것 같습니다.
즉, 블러킹을 유발해서 다른 SQL커넥션들은 대기 중이라 커넥션이 늘기만 하고 connection close를 못하는 상황이 된듯 합니다.
RDS의 MSSQL도 profiler를 지원하는 것 같아요.
Analyzing your database workload on an Amazon RDS for SQL Server DB instance with Database Engine Tuning Advisor - Amazon Relational Database Service
이 툴을 이용해 데드락이나 블러킹을 모니터링 해 보시길 권장해 드립니다.
데드락 키워드 : 개발자 커뮤니티 SQLER.com - 데이터베이스 개발자 Tip & 강좌
로 검색해 보시면 여러 정보 보실 겁니다.