스프링부트 OS 관계

개발 99·2025년 4월 30일
  1. 네트워크 연결

API 요청이 들어올 경우, OS의 네트워크 SYN 큐에 SYN 패킷을 저장한 후, SYN+ACK 패킷을 반환한다.
클라이언트는 ACK 패킷으로 응답한 후, ESTABLISHED가 된다면, SYN 큐를 스프링부트의 ACCEPT큐로 PUSH를 한다.
톰캣의 ACCEPT 큐의 패킷을 톰캣 워커 스레드가 하나씩 처리를 한다.

  • 이때 ACCEPT 큐가 적을 경우, ACCEPT 큐의 버퍼 오버플로우가 발생
  1. 커널 스레드

Java는 One-to-One Threading-Model로 Thread를 생성한다.
또한 User Thread 생성시 OS Thread와 1대1로 연결이 된다.

  • 스프링부트 톰캣 스레드 수를 조정할 필요가 있다.
    ( 스레드 생성 자체가 오버헤드가 매우 큼)

  • 스레드가 많아질수록 컨텍스트 스위칭 비용이 증가한다.

profile
구구구구구!

0개의 댓글