
1. 스프링 부트 톰캣 애플리케이션의 Graceful Shutdown 동작 방식(Spring Boot Tomcat Graceful Shutdown)[ GracefulShutdown의 필요성 ]새로운 버전의 서버를 배포하기 위해서는 기존에 실행중인 서버를 종료하는 과정이 필요한데, 이때 기존의 서버 프로세스를 바로 종료하게 되면, 처리중 혹은 대기중인 요청에 문제가 될 수 있다. 따라서 서버 애플리케이션은 기존에 처리되던 요청을 모두 마무리하고 안전하게 서버를 내릴 수 있는 GracefulShutdown 을 지원해야 한다.프로세스를 종료할 때 강제 종료(리눅스의 -9, SIGKILL)를 하지 않는 한 운영체제는 프로세스에게 종료 시그널을 전달하게 되는데, JVM은 종료 시그널을 받게 될 경우 종료 훅(sh..

1. 올바른 스프링 부트 톰캣 애플리케이션 설정 가이드 (SpringBoot Tomcat Configuration) [ 다양한 스프링 부트 톰캣 애플리케이션 설정들 ]이전 포스팅에서 설명하였듯 ThreadPoolExecutor는 자바 버전과 톰캣 버전 두 종류가 존재하는데, 실질적으로 큰 차이는 없다.톰캣의 ThreadPoolExecutor가 생성되는 코드는 다음과 같은데, 스프링 역시 이에 맞춰 해당 값을 설정할 수 있는 속성들을 제공하고 있다. 스프링 부트에서 조정 가능한 설정값은 크게 4가지가 존재하는데 각각 다음과 같다server.tomcat.max-connections설명: 서버가 동시에 수락하고 처리할 수 있는 최대 연결의 수로, 이 한도에 도달하면 운영체제가 "acceptCount" 설정..

1. 멀티 스레드 기반으로 다중 요청을 처리하는 톰캣(Tomcat)의 구조와 동작 방식[ 웹 애플리케이션 서버(WAS, Web Application Server)과 톰캣 ]스프링 MVC 프레임워크는 자바 엔터프라이즈 개발을 편리하게 해주는 경량급 오픈소스 애플리케이션 프레임워크이며, 대량의 동시 요청 처리를 수행행할 수 있도록 멀티 스레드 모델을 기반으로 하고 있다. 이때 클라이언트와의 요청을 수립하고 이를 받는 부분은 웹 애플리케이션 서버(WAS, Web Application Server)가 수행하며, 대표적으로 톰캣(Tomcat)이 이를 구현하고 있다. [ NIO 기반의 톰캣의 동작 방식 ]사용자 요청이 들어오면 OS 계층에서 TCP 3-way handshake가 발생하고, TCP 연결이 완료된다..

1. 톰캣에서 server.compression.min-response-size가 제대로 동작하지 않는 이유 분석하기 아래의 내용은 HTTP 요청 중에서 content-type: application/json인 경우를 전제로 한다. text/plain 등의 경우에는 정상적으로 작동하고 있다. [ 스프링 부트의 server.compression 설정들 ]스프링 부트에서는 다음의 압축 설정을 통해 압축을 활성화하고, 압축을 적용할 조건을 명시할 수 있다. 해당 설정을 추가하고 클라이언트가 HTTP 요청에 Accept-Encoding: gzip 헤더를 넣고 보내면, 응답의 Content-Length 헤더가 설정된 값보다 클 경우 압축이 진행됨을 기대할 수 있다.server.compression.enabled..

https://vladmihalcea.com/optimal-connection-pool-size/ 1. 데이터베이스 커넥션 풀 및 JPA, 하이버네이트 설정 최적화(Database Connection Pool and JPA, Hibernate properties optimization) [ 데이터베이스 커넥션 풀 설정 최적화 ]기본 정보들데이터베이스에 연결하기 위한 기본 정보들로는 url, username, password, driver-class-name과 같은 것들이 있다. 여기서 중요한 것은 url에 접속 파라미터 부분이다.spring.datasource.url=jdbc:mysql://com.mangkyu.database:3306?\\ rewriteBatchedStatements=true\\..