본문 바로가기
컴퓨터/네트워크

[네트워크] 시스템 부하와 세션, 쿼리와의 관계 | 시스템 속도가 느린 이유는 무엇일까

by 버니케이 2025. 4. 30.
반응형

 

 

전체 시스템 부하는 세션 + 쿼리 관리 이슈와 연결된다.

시스템이 느려지거나 먹통되는 이유는 보통, 세션이 쌓이거나 쿼리가 느리게 동작하기 때문이다.
세션이 메모리를 먹고, 쿼리가 CPU를 잠근다.

 

 

 


📌 세션 관리가 시스템 부하에 미치는 영향  

세션 = 사용자 수 만큼 생기는 저장소

사용자 1명 접속서버 메모리에 세션 1

사용자 1000명 접속세션 1000

사용자 10만 명 접속서버 메모리에 10만 개 쌓임 😵

 

 

 

 

문제는

세션을 계속 들고 있으니까, 메모리 누수처럼 점점 RAM을 먹는다.

심하면 서버가 OOM (Out Of Memory) 으로 죽어버린다.

HttpSession session = request.getSession();

// 여기에 무거운 객체 넣으면 메모리 펑

session.setAttribute("userData", new BigFatObject());

 

 

 



 

 

📌 쿼리 관리가 시스템 부하에 미치는 영향

 쿼리가 느리면 → 서버 하나가 막혀버림

 

한 사용자가 주문 버튼을 누른다.

근데 그 주문 처리 쿼리가 너무 느리다.

그럼 → 해당 요청을 처리하던 서버 쓰레드가 붙잡혀버린다.

동시에 수십 명이 비슷한 요청을 하면? → 서버 쓰레드 부족 → 대기행렬 폭발 → 서버 다운

SELECT * FROM order_table WHERE customer_name LIKE '%김%';

-- 인덱스 미사용, 풀스캔 → 느림

 

 

 

 

 

🔥 그래서 둘을 합치면

세션이 많아메모리 압박

쿼리가 느려 → CPU/DB/쓰레드 압박

그 결과 👉 시스템 전체 부하 증가속도 저하장애 가능성

 

 

 

 

 

그래서 현업에서는

시스템 부하를 줄이기 위해 여러 방안을 고안한다.

항목 해결책
세션 부하 - Redis 세션으로 분산- TTL 짧게 설정- 로그인 상태 최소 정보만 유지
쿼리 부하 - 인덱스 최적화- N+1 문제 해결- 배치성 쿼리 분리
시스템 부하 모니터링 - APM 도구(NewRelic, Pinpoint, Actuator )- GC, Memory, Thread 수 주기적 체크

 

반응형

댓글