1. Kollus 수강 이력 이슈 파악
2. Kollus에서 제공하는 Live LMS Callback
3. ASP 코드 분석
4. Web Server Log Data
5. DB Server Procedure와 DB
6. DB Server CPU 사용량 확인
1. Kollus 수강 이력 이슈 파악
- 사용자 증가에 따라 동영상 플레이어 끊김 현상 발생.
- 그로인해 수강이력 DB 누락 이슈 발생.
- 수강 이력 DB 갱신 시간 조정(1분 → 3분)
- VOD 강의와 LIVE 강의 때 발생
1-1) DeadLock 발생
- MS-SQL 운영시 프로시저가 동작을 안하고 뻗어버리는 경우가 종종 발생한다.
1-1)-1. Lock이 발생할 경우
- 대용량 데이터 처리로 인해 쿼리문의 실행시간이 길어져 오랜시간 Lock을 잡고 있는 경우
- 트랜잭션을 걸었지만 Commit 또는 Rollback되지 않은 경우
- 결국, 리소스 경합으로 인한 교착상태(Dead Lock) 발생
1-1)-2. Dead Lock을 최소화할 수 있는 방법
- 트렌잭션을 일괄처리로 작은 시간 단위로 유지하기
- 트랜잭션을 길게 유지할 경우 해당 테이블에 대한 배타적 Lock의 잠금 시간도 길어지기에
- 쿼리 성능을 개선해 하나의 일괄처리로 짧은 시간내에 데이터를 처리하는 것이 좋다.
- 낮은 고립 수준을 사용한다.
- 일반적으로 대용량 데이터 저장 및 처리 시 데드락이 많이 발생함.
- SET TRANSACTION ISOLATION LEVEL READ, UNCOMMITED 구문이나
- SELECT 절의 WITH(NOLOCK) 옵션을 통해 Lock 여부에 상관 없이
- 데이터를 읽어 올 수 있다.
1-1)-3. 회사 내 DEAD LOCK 처리 상태
- 트랜잭션 시간 단위 늘리기
- READ UNCOMMITED 구문 사용 중
- SELECT 절의 WITH(NOLOCK) 옵션 사용중
1-1)-4. 일반적으로 Lock이 발생할 경우
- 대용량 데이터 처리로 인해 쿼리문의 실행시간이 길어져 오랜 시간 Lock을 잡고 있는 경우
- 트랜잭션을 걸었지만 Commit 또는 Rollback 되지 않은 경우
- 리소스 경합으로 인한 교차
2. Kollus에서 제공하는 Live LMS Callback
3. ASP 코드 분석
- 실제 이슈가 발생하는 코드 분석
- player/kollus/lmsCallback.asp(VOD 강의)
- player/kollus/lmsCallbackLive.asp(LIVE 강의)
3-1) Live 강의 ASP Code(API)
-
lmsCallbackLive.asp

3-2) Live 강의 ASP Code(Query)
-
ASP DB관련 문법(Click)
-
lmsCallbackLive.asp
- Query Data
- LMS Data Log
- Call DbCon.ExecSP("P_LIVE_LOG_PROC", arrParams, DBACALOG)
- 수강이력 Data
- Call DbCon.ExecSP("pInsertLiveLogKollus", arrLogParams, nothing)

3-3) Call DbCon.ExecSP()
- LMS Data Log와 수강이력 Data를 처리하는 ExecSP

4. Web Server Log Data
4-1)-1. Web Server ErrorLogs
-
ExecSP의 트랙잭션 에러

4-1)-2. ASP classDb.asp
5. DB Server Procedure와 DB
5-1) ASP Application내 DB Server 연동

5-2) DB Server내 프로시저와 DB-1
5-2)-1. LMS Data Log
5-3) DB Server내 프로시저와 DB-2
5-4) Kollus LMS Callback 설정
6. DB Server CPU 사용량 확인