C# 동시 병렬 호출
데드락(Dead lock - 복수의 쓰레드가 상대가 소유한 리소스를 서로 기다리고 있는 상황)은 트래픽이 많은 Production 데이타베이스에서 가끔 발생하는 문제이다. SQL Server는 이러한 Dead Lock 상황이 발생하면 해당 쓰레드들 중 가장 트랜잭션이 짧게 진행된 쓰레드 (즉, BEGIN TRAN 이후 Transaction Log가 좀 더 적게 쌓인 쪽)를 자동적으로 종료하여 데드락 상황을 해소한다. 하지만 이러한 데드락이 자주 발생한다면, SQL 프로그래밍이 잘못된 경우가 대부분이므로 이를 수정해 줘야 한다. 문제는 상당한 경우 이러한 데드락은 스트레스가 적은 개인 머신이나 테스트 머신에서는 잘 발생하지 않는다는 것이다. 따라서 대량의 호출이 동시에 발생하는 Production 서버를 시물레이션하기 위해 스트레스용 프로그램을 작성해야 하는 경우가 종종 있다. (물론 외부 툴을 사용할 수 있지만) 아래는 C#에서 Parallel 클래스를 이용하여 간단하게 SQL Server의 Stored Procedure를 동시에 100개 쓰레드를 만들어 호출하는 예제이다.
테스트단계에서 사용하면 좋을 것 같다.
예제
출처 : http://www.csharpstudy.com/Practical/Prac-concurrent-call.aspx
'Program > C#' 카테고리의 다른 글
[C#] Trace를 이용한 로깅 (0) | 2019.01.22 |
---|---|
[C#] .NET Configuration 파일 (0) | 2019.01.22 |
[C#] 이메일 발송하기 (SMTP) (0) | 2019.01.22 |
[C#] Excel 프로그래밍 (0) | 2019.01.22 |
[C#] Naming Convention (0) | 2019.01.21 |