Incident 리뷰
안녕하세요
오늘은 예전 회사에서 재직중에 있었던 서버 부하 이슈 처리를 공유드리려고 합니다.
그 때 당시 대부분의 시니어분들이 퇴사하였고 팀 내에 혼자 결제 데이터를 개발,운영하고 있었습니다.
아래와 같은 문제가 발생하였으며 이슈에 대한 해결방안을 나름대로 최대한 찾아 대응하였습니다.
이후, 혼자 처리하기에는 이슈가 큰 건이라 판단하여 데이터실 내의 DBA분과 로그 체크를 하며 함께 진행하였습니다.
문제
- 서비스의 계속된 확장으로 인하여 한정된 Resource를 가지고 점점 많은 양을 처리 및 여러 팀에서 만든 쿼리에서 점진적으로 문제가 발생하기 시작하였습니다.
- 실제 서비스와 직결되는 부분이다보니 서버를 전환하고 재부팅하는 식으로 대응을 하였으나 임시 방편일 뿐 장애 빈도가 점점 늘어나고 있었습니다.
- 심각성이 점차 늘어나며, 문제를 해결하기 위해 어떤 문제인지 2가지로 정의하였습니다.
- 데드락이 발생하여 할당 가능한 Resource가 없어 서비스 딜레이
- API 응답 시간 증가
해결 방안
- sp_WhoIsActive라는 툴 사용
-
어떤 세션이 얼마만큼의 리소스를 가지고 있는지, 어떤 세션을 대기하는지를 알 수 있습니다.
- index가 얼마나 깨진지를 확인 할 수 있는 지표 값이 있었는데,, (현재 어디서 확인하는지 기억이 잘 안남) 해당 값이 90%이상이였고, 매일 많은 양의 데이터가 쌓이다보니 인덱스 자체가 깨져 조회 시 종종 full scan 처리와 동일하게 찾아가는 것으로 추측
- index 자체를 완전히 날리고 다시 새로 구성하여 처리
아래는 그 때 당시 정리하여 둔 자료들입니다.