appsroot 님의 글 87
RDS 페일오버 후 자바가 옛 IP로 붙을 때
DB 페일오버 자체는 몇십 초면 끝난다. 그런데 애플리케이션만 한참을 옛 IP에 매달려 있다가 결국 재기동으로 푸는 경우를 현장에서 자주 본다. 스탠바이로 승격은 됐고 DNS도 새 IP를 가리키는데…
Java 8에서 Java 25로 올릴 때 확인할 것
Java 8 지원 종료 이야기가 나올 때마다 "다음 분기에 하자"며 미뤄 둔 업그레이드 프로젝트가 어느 조직에나 하나쯤 있다. Tomcat 위에서 몇 년째 조용히 돌아가는 서비스라면 더 그렇다. 이…
WAS 종류 비교, JEUS부터 톰캣까지
WAS(Web Application Server) 도입이나 마이그레이션을 검토할 때마다 나오는 질문이 있다. "국산 상용, 외산 상용, 오픈소스 중 뭘 쓰나요." 이번 글에서는 국내에서 실제로 도입…
Nginx 502 'upstream sent too big header' - proxy_buffer_size, proxy_buffers, busy_buffers_size로 큰 응답 헤더 받기
1. 개요 백엔드 WAS 앞에 Nginx를 리버스 프록시로 두는 구성은 흔하다. 평소 잘 돌던 경로가 어느 날 특정 사용자, 특정 API에서만 502를 내뱉을 때가 있다. 로그인 직후나 세션이 커진…
Spring Boot에서 Logback JSON 구조화 로깅
운영 중인 서비스에서 장애 원인을 좇다 보면 로그가 텍스트 한 줄로 흩어져 있어 특정 요청만 뽑아보기 어려운 경우가 많다. 톰캣 접근 로그와 애플리케이션 로그를 grep으로 맞춰 보다가 시간만 쓴 …
Tomcat 11 가상 스레드 켜기와 maxThreads 스레드풀의 차이 - 처리량과 메모리 비교
Tomcat 스레드풀 이야기를 하면 늘 maxThreads=200 을 몇으로 올릴지가 화제였다. 블로킹 I/O가 많은 서비스에서 요청이 몰리면 스레드 200개가 다 대기에 물려 큐가 쌓이고, 그렇다…
ALB와 Nginx 뒤 Tomcat이 클라이언트 IP를 프록시 IP로 남길 때 RemoteIpValve로 바로잡기
ALB나 Nginx를 앞단에 두고 Tomcat을 뒤에 붙이는 구성은 흔하다. 그런데 이렇게 올리고 나면 액세스 로그에 찍히는 접속 IP가 전부 프록시 IP 한두 개로 도배되는 걸 발견하게 된다. 로…
Tomcat에 JPetStore (MyBatis) 올리기 + HSQLDB가 아닌 MySQL 연결하기
1. JPetStore 설정 JPetStore 소스는 https://github.com/mybatis/jpetstore-6 에 있는 것을 사용하였다. git clone https://github.c…
Tomcat bindOnInit (w/ strace)
Tomcat의 bindOnInit 옵션에 대해 알아본다. 1. 개요 2. bindOnInit 설정이란? 링크 : https://tomcat.apache.org/tomcat-8.5-doc/config…
tcp_syn_retries와 telnet을 이용한 timeout 확인 테스트
1. 개요 Connect 시도 시 timeout 확인 2. 테스트 환경 Amazon Linux 2 3. 테스트 방법 스크립트 작성 4. 결과 tcp_syn_retries 설정 Test#1 Timeo…
Tomcat 8.5.31의 Bug 62297 - Add support for multiple hosts/contexts in CrawlerSessionManagerValve
1. 개요 Tomcat 8.5.31에 적용된 Bug 62297에 대한 내용이다. 8.5.30과 비교하여 살펴보자. 2. 소스 코드 2-1. 추가 import 클래스 import org.apache.…
Tomcat 8.5, BIO Connector Removed
1. 개요 Tomcat의 BIO Connector에 대한 이야기이다. BIO는 Java Blocking I/O 기반 커넥터를 의미하며, 오래된 Tomcat 설정이나 마이그레이션 문서에서 종종 등장한…