Arthas를 활용한 JDBC 드라이버 클래스 데드락 문제 해결 과정

문제 상황 마이크로서비스 프로젝트를 개발하던 중, 데이터베이스 연결 생성 과정에서 블로킹 상태에 빠지는 문제가 발생했습니다. 프로그램이 로그를 출력한 후 멈춰서 더 이상 새로운 로그가 표시되지 않았습니다. 이에 Arthas를 사용하여 문제를 추적하고, 발견된 원인을 해결했습니다. 환경 소프트웨어버전 JDK1.8 Spring Boot2.1.1.RELEASE Hutool5.5.5 문제 원 ...

7월 22일 05:54에 게시됨

SQL Server 잠금 및 데드록 해결을 위한 쿼리 모음

기본적인 해결 방법 잠긴 테이블을 확인하려면 다음 쿼리를 실행합니다: SELECT request_session_id AS session_id, OBJECT_NAME(resource_associated_entity_id) AS object_name FROM sys.dm_tran_locks WHERE resource_type = 'OBJECT'; 잠금 프로세스를 종료하려면: DECLARE @session_id INT; SET @session_id = 55; DECLARE @query VARCHAR(100); SET @ ...

7월 11일 21:57에 게시됨

kbmMW 스케줄러 WaitRun 메서드의 데드락 문제

kbmMW 스케줄러의 WaitRun 메서드에서 발생하는 데드락 문제를 재현하기 위해 테스트 코드를 작성했다. 이 문제는 두 가지 상황에서 발생할 수 있다.첫 번째 상황은 Run 메서드 내부에서 예외가 발생하는 경우다. 이때 메인 스레드에서 실행 중인 ev.WaitRun이 무한 루프에 빠진다. 두 번째 상황은 AfterRun 콜백을 사용하는 경우다. 이 또한 동일한 문제를 야기한다. 해당 ...

7월 8일 20:36에 게시됨

Java 스레드(Thread) 개념 및 활용

스레드는 Java 프로그래밍에서 중요한 개념 중 하나입니다. 먼저 프로세스와 스레드의 차이점을 간단히 살펴보겠습니다. 프로세스(Process)란 운영체제에서 실행 중인 하나의 프로그램을 의미하며, 시스템 자원을 할당받는 기본 단위입니다. 각각의 프로세스는 독립된 메모리 공간과 코드를 가지고 있습니다. 스레드(Thread)는 프로세스 내부에서 실행되는 경량화된 작업 ...

7월 1일 23:57에 게시됨

C++ 멀티스레딩: thread

프로세스와 스레드 프로세스: 시스템 리소스 할당의 최소 단위, 일반적으로 실행 중인 프로그램 인스턴스로 정의됨 스레드: 시스템 작업 스케줄링의 최소 단위 프로세스 간 통신: 파이프, 세마포어, 신호, 메시지 큐, 공유 메모리, 소켓 스레드 간 통신: 락 메커니즘, 세마포어 메커니즘, 신호 메커니즘, 배리어 동기화: 작업 조각의 순서를 보장하는 것 상호 배제: 동일한 ...

6월 16일 20:34에 게시됨