분류 전체보기 59

Kafka 리스너에서 HTTP 호출 장애 대응기: 문제 분석과 개선까지

장애 상황어느 날, 외부기관 HTTP 호출이 지연되는 이슈가 발생했다.이 작은 문제가 예상보다 시스템 전체에 크게 영향을 끼쳤다.발생 원인외부 방화벽 전환 과정에서 몇 초 동안 네트워크 순단이 일어났고,프록시 서버가 외부기관과 연결할 수 없는 상태가 됐다.증상프록시 서버 타임아웃은 1분으로 설정돼 있었다.그런데 우리 서버의 HTTP 요청 부분에는 별도의 타임아웃 설정이 빠져 있어서,요청이 최대 1분간 블로킹됐다.이 요청을 처리하던 Kafka 리스너 스레드도 같이 블로킹되면서,Kafka 메시지의 offset commit이 지연되고,결과적으로 메시지가 적체(backlog) 되는 상황까지 이어졌다.장애 분석 요약프록시를 통해 외부기관 호출 시 소켓이 정상 종료되지 않으면서 블로킹 발생HTTP 클라이언트에 re..

장애 개선 2025.04.22

GraalVM Native 실행 시 clone3 때문에 발생한 에러 정리

에러 상황Graalvm으로 네이티브 이미지를 만들고 이걸 도커로 말아서 실행 시 에러 발생함.에러 메시지java.lang.OutOfMemoryError: unable to create native thread : possibly out of memory or process/resource limits reached at com.oracle.svm.core.thread.PlatformThreads.startThread(PlatformThreads.java:741) ...  🧠 원인 분석🔹 핵심 원인: GraalVM Native가 clone3() 시스템 콜을 호출하는데,→ Docker의 보안 정책(seccomp)이 이 syscall을 막고 있어서 실행 실패📌 clone3()은 무엇인가?clone3()은..

장애 개선/Error 2025.04.01

GraalVM Native 빌드 시 Missing character set id 846 오류 해결기

Oracle JDBC + GraalVM Native 빌드 환경에서Missing character set id 846 is not loaded at image build time이 오류가 발생하는 배경과 해결 과정을 상세히 설명합니다. 오류 메시지 java.lang.IllegalStateException: Missing character set id 846 is not loaded at image build time  이 오류는 GraalVM Native로 빌드된 애플리케이션을 실행할 때Oracle DB 연결 초기화 단계에서 발생합니다.특히 com.zaxxer.hikari.HikariPool 초기화 중에 터지는 경우가 많습니다.🎯 오류 배경: 왜 발생할까?1. Oracle JDBC의 내부 동작Oracle..

장애 개선/Error 2025.03.31

lower_bound, upper_bound (이분탐색 ) 백준 11663번 선분 위의 점

백준 11663번 문제에서 lower_bound와 upper_bound 적용문제 요구사항점 xxx가 선분 [l,r][l, r][l,r]에 포함되는지 확인하려면 l≤x≤rl \leq x \leq rl≤x≤r를 만족해야 합니다. 이를 효율적으로 계산하기 위해 선분의 시작점과 끝점을 각각 정렬하고 이분 탐색을 활용합니다.적용 방법정렬된 시작점 배열 (starts)에서 l≤xl \leq xl≤x를 만족하는 시작점의 개수를 upper_bound로 구합니다.정렬된 끝점 배열 (ends)에서 rrx를 만족하는 끝점의 개수를 lower_bound로 구합니다.점 xxx를 포함하는 선분의 개수는: {포함 선분 개수} = upper_bound - lower_bound lower_bound와 upper_bound의 차이점과 ..

JPA 더티체킹 문제와 스프링배치 대량 데이터 업데이트 해결 사례

1. 발생 상황작업 내용:스프링 배치의 Tasklet에서 2만 건의 데이터를 100건씩 나눠서 처리하려고 함.API에서 데이터를 조회하여 DB에 저장.저장된 데이터를 기반으로 응답 데이터를 다른 API에 전달.처리 방식:JPA를 사용하여 데이터 저장 및 업데이트를 처리하려고 했으나, 대량 데이터 작업에서 JPA의 더티체킹 문제로 인해 트랜잭션 충돌이 발생함.2. 문제 상황 및 원인1) JPA 더티체킹으로 인한 에러현상:entities.flush()와 entities.clear()를 사용하여 100건씩 트랜잭션을 처리하려 했으나, DTO를 사용하지 않고 동일한 엔티티를 반복적으로 처리하면서 더티체킹이 실패하고 이후 업데이트가 누락됨.원인:flush() 이후 clear()가 호출되면서 영속성 컨텍스트가 초기..

장애 개선/Error 2025.01.14

graalvm 빌드 시 에러 |Logging system failed to initialize using configuration from 'null'

https://github.com/spring-projects/spring-boot/issues/34819 oracle driver and serialization conflict · Issue #34819 · spring-projects/spring-bootDescription Introducing com.oracle.database.jdbc:ojdbc11:21.9.0.0 into the application and then packaging it as Native will result in a serialization error. The error is consistent with quarkusio o...github.com Logging system failed to initialize using ..

장애 개선/Error 2024.12.23

DFS, BFS, 다익스트라, DFS+DP, 백트래킹 문제 유형 정리

DFS, BFS, 다익스트라, DFS+DP, 백트래킹 문제 유형 정리문제에서 사용해야 할 알고리즘 유형은 입력 범위, 문제 요구사항, 시간 복잡도, 그래프 구조를 기준으로 구별할 수 있습니다. 아래는 각 유형의 특징, 시간 복잡도, 입력 범위, 적용 예시, 구별 기준을 한눈에 정리한 표입니다.1. DFS (Depth-First Search)특징:한 경로를 끝까지 탐색한 뒤, 백트래킹하면서 다른 경로를 탐색.트리나 그래프의 경로 조사, 특정 조건을 만족하는 경로 찾기.시간 복잡도:그래프 전체 탐색: O(V+E)O(V + E)O(V+E) (V: 정점, E: 간선).경우의 수 탐색: O(2N)O(2^N)O(2N) (예: 모든 경로 탐색).입력 범위:노드 수 V≤103V \leq 10^3V≤103 (그래프가 작..

dfs+dp 문제 모음

DFS와 DP를 함께 사용하는 문제 유형은 최적 경로 탐색, 특정 상태에서의 최적화 문제, 또는 경로 개수를 구하는 문제에 자주 등장합니다. 아래는 DFS + DP를 사용하는 대표적인 문제와 관련 백준 문제 목록입니다.1. 경로 탐색 및 최적화 문제이 유형은 그래프나 격자에서 특정 조건에 맞는 경로를 찾거나, 경로의 수를 세거나, 경로의 최적값을 계산하는 문제입니다.추천 문제백준 1520 - 내리막 길DFS로 가능한 모든 경로를 탐색하고, DP로 중복 계산을 방지하여 경로 수를 효율적으로 계산.백준 11403 - 경로 찾기그래프에서 특정 정점 간에 경로가 존재하는지 확인하는 문제로, DFS와 DP를 통해 경로 여부를 기록.백준 1240 - 노드 사이의 거리그래프에서 두 노드 간의 거리를 구하는 문제로, ..

도커를 사용하여 젠킨스 설치하기

1. 배포 자동화 도입 이유 2. 젠킨스를 활용하여 배포과정 3. 도커를 이용하여 젠킨스 설치하는 방법1) 도커로 젠킨스 이미지 pulldocker image pull jenkins/jenkins:jdk17 2) 도커 컴포즈 파일 작성version: '3.8'services: jenkins: image: jenkins/jenkins:lts-jdk17 container_name: jenkins_main ports: - "8080:18080" - "50000:50000" volumes: - jenkins_home:/var/jenkins_home - /var/run/docker.sock:/var/run/docker.sock restart: on-..

개발 공부 2024.08.13

jenkins : docker dind agent 만들기

1. 도커 dind agent 이미지 다운로드https://github.com/felipecrs/docker-images/tree/master/devcontainer#jenkinsfile-dockerfile-agentdocker pull ghcr.io/felipecrs/devcontainer:latest 2. Dockerfile 작성# .devcontainer/DockerfileFROM ghcr.io/felipecrs/devcontainer# JDK 11과 Gradle 7.4.1 설치RUN pkgx install openjdk.org@11 gradle.org@8.2.1 \ && java --version \ && gradle --version 윈도우에서 메모장으로 Dockerfile 생성 시 ..