본문 바로가기
삵

Java

118개의 글

가상 스레드가 synchronized에서 고정될 때

Java

Tomcat 10.1부터 요청 처리를 가상 스레드로 돌릴 수 있게 되면서, 스레드 풀 튜닝에 쏟던 고민이 한결 줄었다. 그런데 막상 운영에 올려보면 "가상 스레드를 켰는데 동시 처리량이 기대만큼 안…

appsrootappsroot·2026년 10월 17일·조회 1

자바 스레드 덤프 분석하는 법

Java

장애 대응을 하다 보면 "서버는 살아 있는데 요청이 안 돌아온다"는 연락을 받을 때가 있다. 로그에는 에러가 한 줄도 없고, 재시작하면 멀쩡해져서 원인은 확인도 못 한 채 넘어간다. 재시작 버튼을 …

주말만기다려주말만기다려·2026년 10월 7일·조회 7

자바 OOM 자동 힙덤프로 누수 객체 찾기

Java

운영 중인 자바 애플리케이션이 한밤중에 OutOfMemoryError: Java heap space 를 던지고 죽는 일은 드물지 않다. 문제는 다음날 아침 로그를 열어봐도 "힙이 모자랐다"는 사실만…

고고구마엔사이다·2026년 10월 6일·조회 5

RDS 페일오버 후 자바가 옛 IP로 붙을 때

Java

DB 페일오버 자체는 몇십 초면 끝난다. 그런데 애플리케이션만 한참을 옛 IP에 매달려 있다가 결국 재기동으로 푸는 경우를 현장에서 자주 본다. 스탠바이로 승격은 됐고 DNS도 새 IP를 가리키는데…

appsrootappsroot·2026년 9월 24일·조회 4

Java 8에서 Java 25로 올릴 때 확인할 것

Java

Java 8 지원 종료 이야기가 나올 때마다 "다음 분기에 하자"며 미뤄 둔 업그레이드 프로젝트가 어느 조직에나 하나쯤 있다. Tomcat 위에서 몇 년째 조용히 돌아가는 서비스라면 더 그렇다. 이…

appsrootappsroot·2026년 9월 21일·조회 16

RestClient로 동기 HTTP 클라이언트 갈아타기

Java

서버 사이드에서 외부 API를 호출하는 코드는 대부분 RestTemplate 으로 짜여 있다. 그런데 요즘 새 프로젝트를 열어보면 자동완성에서 RestClient 가 먼저 뜬다. WebFlux를 쓰…

후후아빠·2026년 9월 19일·조회 18
Java

ExecutorService로 병렬 호출하면 왜 스레드가 새는가 - JDK 25 구조적 동시성 StructuredTaskScope로 실패 시 자동 취소

서비스 하나가 화면을 그리려고 회원 정보, 주문 내역, 추천 목록을 각기 다른 API에서 끌어오는 구조는 어디에나 있다. 순차로 부르면 느리니 병렬로 묶는데, 이때 ExecutorService 와 …

빅토르최빅토르최·2026년 9월 7일·조회 7
Java

Spring Boot에서 Logback JSON 구조화 로깅

운영 중인 서비스에서 장애 원인을 좇다 보면 로그가 텍스트 한 줄로 흩어져 있어 특정 요청만 뽑아보기 어려운 경우가 많다. 톰캣 접근 로그와 애플리케이션 로그를 grep으로 맞춰 보다가 시간만 쓴 …

appsrootappsroot·2026년 9월 3일·조회 7
Java

Java 17과 Java 25의 차이 - 두 LTS 사이에 바뀐 것과 업그레이드 확인 목록

운영 중인 서비스의 JDK 버전을 물어보면 아직 17이라는 답을 제일 많이 듣습니다. 8에서 17로 넘어오면서 한 번 크게 고생한 기억이 남아 있으면 당분간 런타임에 손대기 싫어지는 것도 당연하죠.…

주말만기다려주말만기다려·2026년 8월 27일·조회 67
Java

Spring Boot JPA N+1 쿼리 진단과 해결: generate_statistics, fetch join, @EntityGraph, @BatchSize

코드 리뷰나 성능 점검을 하다 보면 JPA N+1 얘기를 반복해서 하게 된다. 목록 화면 하나 열었을 때 쿼리가 몇 개 나가는지 물어보면 답이 바로 안 나오는 경우가 많고, 원인을 찾은 뒤에도 fe…

¯¯\_(ツ)_/¯·2026년 7월 29일·조회 15

Spring @Cacheable 상속 시 파라미터명 불일치로 인한 캐시 키 충돌 문제 해결

Java

발단: "왜 다른 데이터가 나오죠?" API 개발 중 황당한 버그를 만났습니다. GET /api/items?category=A → A 카테고리 데이터 ✓ GET /api/items?category=…

1103동103호·2026년 3월 28일·조회 281

HikariPool-1 - Thread starvation or clock leap detected (housekeeper delta=15m45s854ms). 메시지는?

Java

2026-01-25 08:17:33 - HikariPool-1 - Thread starvation or clock leap detected (housekeeper delta=15m45s854ms).…

고고구마엔사이다·2026년 1월 25일·조회 689

JDK17은 어떻게 C10k를 해결했을까?

Java

🔹 JDK 17 이전에도 이미 Reactive Streams가 존재했음 • JDK 9(2017년)에 java.util.concurrent.Flow 패키지가 추가되면서 Reactive Streams…

99미리포·2025년 3월 5일·조회 1,395

Tomcat에 JPetStore (MyBatis) 올리기 + HSQLDB가 아닌 MySQL 연결하기

Java

1. JPetStore 설정 JPetStore 소스는 https://github.com/mybatis/jpetstore-6 에 있는 것을 사용하였다. git clone https://github.c…

appsrootappsroot·2023년 5월 8일·조회 1,716

와탭 자바 에이전트로 Spring Cloud Gateway 모니터링하기

Java

1. 배경 기본 와탭 자바 에이전트로는 Spring Cloud Gateway 모니터링 불가 별도로 제공되는 위빙(Weaving) 기능을 사용해야 함 2. 지원 버전 제공되는 위빙 플러그인 버전 : …

동교동삼거리동교동삼거리·2023년 4월 26일·조회 1,630

IBM JVM 주요 Parameter 설명

Java

IBM JVM의 주요 Parameter를 설명하는 문서이다. 옵션 기본값 설명 Xclasshc TRUE . 클래스로더가 변했을 때만 Class GC를 수행할지 여부 Xalwaysclassgc . G…

매매큠·2022년 1월 18일·조회 2,364

Spring IOC - ApplicationEventPublisher

Java

개요 옵저버 패턴의 구현체로서, 이벤트 기반의 프로그래밍을 할 때 유용한 인터페이스. 실습을 위한 주요 구성 요소 퍼블리셔, 이벤트, 이벤트핸들러 이벤트 ApplicationEvent 상속 publ…

천천진반·2021년 12월 1일·조회 1,368

JMC(JDK Mission Control) 8.1 릴리스 - JMC Agent를 통한 JVM 성능 모니터링

Java

1. 개요 최근 JMC(JDK Mission Control) 8.1가 릴리스 되었다. 이 버전부터 JMC Agent 플러그인이 즉시 제공되므로 성능 모니터링 요구 사항에 대해 쉽게 활용 가능하다. …

애애리얼·2021년 11월 30일·조회 2,160

Feign Client

Java

1. 소개 Netflix에서 만든 것으로 웹 서비스 클라이언트를 보다 쉽게 개발할 수 있도록 도와주는 도구이다. 2. 사용법 의존성 추가 (spring-cloud-starter-feign) @Ena…

¯¯\_(ツ)_/¯·2020년 12월 5일·조회 14,294

HttpUrlConnection을 이용하여 REST API 호출하고 JSON 받기

Java

1. 코드 import org.json.JSONException; import org.json.JSONObject; import java.io.*; import java.net.HttpURLConn…

라라그나로크·2020년 11월 28일·조회 17,923
Java

Dockerizing Spring Boot Application

Spring Boot 애플리케이션을 Docker 환경에 배포하기 위해서는 크게 4가지의 과정이 필요하다. Spring Boot 애플리케이션 만들기 Dockerfile 만들기 Dockerfile을 빌…

하하마는무슨색·2020년 8월 18일·조회 26,460
Java

ZGC(Z Garbage Collectors)

Java 11 버전의 GC는 많은 개선과 변화를 가지고 왔다. ZGC(Z Garbage Collectors)란? ZGC는 아래의 목표를 충족하기 위해 설계된 확장 가능하고 낮은 지연율(low lat…

하하마는무슨색·2020년 8월 10일·조회 16,951

[Spring Boot] Spring Data JPA & MongoDB 암호화 처리

Java

JPA를 사용해 MongoDB를 연동하는 과정에서 MongoDB 내에 값을 암호화해야 하는 경우가 있다. 이에 spring-data-mongodb-encrypt 라는 암호화 모듈 제공파일을 사용하여…

쿠쿠거·2020년 7월 14일·조회 5,885

ThreadLocal이란?

Java

1. 개요 ThreadLocal에 대해 알아본다. 2. 역사 자바 1.2 버전부터 제공되고 있다. 3. 목적 스레드 단위로 로컬 변수를 할당하는 기능이다. 일반적인 변수는 메소드, for 블록 등 …

동교동삼거리동교동삼거리·2020년 6월 21일·조회 3,119