Blog

동시성 문제 해결 및 성능 개선 방안 수집

tag
토픽선정
날짜
2023/10/26
생성 일시
2023/10/28 06:39
작성자
진행중
완료
송유헌
카프카
세마포어, 뮤텍스 (ReentrantLock)
정강용
Redisson 분산락(10.27 예정)
비관적락, 낙관적락 트랜잭션 격리수준변경 Syncronized
1.
락공유 자원에 접근할 때 그 자원을 사용하는 스레드만이 접근하도록 제한한다.다른 스레드들은 대기한다.
뮤텍스(Mutex), 세마포어(Semaphore)
1.
트랜잭션
여러 작업을 하나의 묶음으로 처리하여 모든 작업이 성공적으로 이루어지거나 아무런 작업도 이루어지지 않도록 하는 방법이다.
2.
데드락 회피
자원 할당 상태와 스레드의 요구를 고려하여 데드락이 발생하지 않도록 자원을 할당한다.
Locking
-ReentrantLock
트랜잭션 격리 수준을 더 높게 설정하기
현재 설정된 Isolation.REPEATABLE_READ 대신 Isolation.SERIALIZABLE
특정 엔터티에 대한 동시 접근 제한
a.
애플리케이션 로직 재검토
다중 스레드 환경에서 동시에 동일한 데이터에 접근하는 로직이 있는지 체크한다.
필요한 경우, 해당 로직을 동기화 메커니즘을 사용하여 동시 접근을 방지한다.
synchronized 키워드나 ReentrantLock 등의 도구를 사용하여 동시성 문제를 해결할 수 있다.
b.
추가적인 예외 처리
현재 NullPointerException이 발생하는 곳에 더 구체적인 예외 처리를 추가하여 사용자에게 명확한 오류 메시지를 제공한다.