DeadLock

CS

[CS]경쟁 상태(Race Condition)과 교착 상태(Dead Lock)

경쟁 상태(Race Condtion) 이란? 경쟁 상태는 두 개 이상의 스레드 또는 프로세스가 공유 자원에 동시에 접근하고 수정을 시도할 때 발생 할 수 있는 문제이다. 즉 병행 프로그래밍 또는 동시성 프로그래밍 환경에서 발생하는 문제로써, 스레드 간의 실행 순서가 예상과 다를 경우 의도와 다른 결과가 발생하며 프로그램의 정확성과 안정성을 저해하는 결과 유발한다. 경쟁 상태가 발생하는 기본적인 원인은 다음과 같다. 1. 동시성 접근 : 여러 스레드 또는 프로세스가 동시에 공유자원(변수, 파일, 데이터베이스)에 접근하려 할 때 발생한다. 2. 비원자성(Non-atomic) 연산 : 공유 자원을 수정하는 연산이 원자적이지 않을 경우, 즉 여러 단계로 나눠서 수행되는 경우 발생할 수 있다. *원자적 : 수행 ..

나혼자삽질

[Database] Ms-SQL DeadLock 이슈 처리

이슈 사내 회원 서비스 운영중 로그인 과정에서 '트랜잭션이 잠금 리소스에서 다른 프로세스와의 교착 상태가 발생하여 실행이 중지되었습니다. 트랜잭션을 다시 실행하십시오.' 에러와 함께 서버로 들어온 요청이 처리되지 못하고 Error가 발생한 부분을 모니터링을 통해 감지됨. 해당 이슈가 발생한 DataBase는 Ms-SQL 사용중이었으며, 각각 [05:47:300], [05:47:726] 요청시간으로 같은 회원에 의해 동일한 요청이 거의 비슷한 시간에 들어오게 됨 요청 1의 경우 긴 지연시간을 가진후 정상 처리 되었고, 요청 2의 경우 요청 1의 지연시간을 대기하다 위와 같이 DeadLock 처리됨. 원인 및 해결 DeadLock이 발생한 원인을 파악하기 위해 다양한 추론을 통해 접근 1. 로직 처리시간이 ..

turtleDev
'DeadLock' 태그의 글 목록