분류 전체보기(70)
-
OOM 원인 분석기, 근데 이제 데드락과 스레드
시리즈로 나오지 않기를 간절히 바라며 포스팅을 시작합니다..🥲 🧨 문제 발생: Heap도 안 찼는데 OOM? 이틀에 한 번 꼴로 날라오는 OOM 발생 메일.. 늘 그렇듯 원인 분석을 위해 힙 덤프 파일을 요청하려 했으나 예상 외의 답변이 돌아왔다. 실제 OOM이 발생하는 시기의 Heap 메모리 영역을 확인해보니최대 용량으로 지정해놓은 1Gib에 한참 밑도는 상황에서 터지는 것을 알 수 있었다. java.lang.OutOfMemoryError: Java heap spacejava.lang.OutOfMemoryError: GC Overhead limit exceededjava.lang.OutOfMemoryError: Requested array size exceeds VM 애플리케이션 내부에서 OO..
2025.05.12 -
Spring Batch StepScope 사용 시 Entity Not Mapped 오류 해결법 (다중 데이터소스 환경)
💥 Spring Batch에서 Entity Not Mapped 오류 발생Spring Batch에서 여러 데이터소스를 설정하고,그 중 하나(subEntityManagerFactory)를 이용해서 JpaPagingItemReader로 조회하려고 했다.하지만 Batch 실행 중 다음 에러가 발생했다.org.hibernate.hql.internal.ast.QuerySyntaxException: EntityA is not mapped처음엔 Entity 매핑 문제를 의심했지만, 엔티티도 제대로 선언되어 있었고, Config도 문제없었다.결국 원인은 EntityManagerFactory 주입 방식 문제였다. 🔍 Bean 주입 시점과 프록시로 발생한 문제 분석 Batch는 기본적으로 ApplicationContex..
2025.05.06 -
자바의 로봇청소기, 가비지 컬렉션
자바에는 가비지 컬렉션(Garbage Collection) 이라는 기능이 있습니다.영문 뜻으로 짐작할 수 있듯이 사용하는 객체의 메모리를 주기적으로 검사해서 청소해주는 일을 합니다!C와 C++같은 Unmanaged language는 free()와 같은 함수를 사용해서 직접 메모리를 해제하는 반면Garbage Collector는 이러한 번거로운 일을 대신 해주고 있는 것이죠! (like 로봇청소기) ♻ 가비지 컬렉션 ( vs 가비지 컬렉터) 먼저, 헷갈릴 수 있는 두 용어를 정리하고 가겠습니다. 가비지 컬렉션 메모리 관리 프로세스로, 더 이상 사용되지 않는 메모리(객체)를 자동으로 찾아서 회수하는 작업 → 청소가비지 컬렉터가비지 컬렉션을 수행하는 구성요소. 불필요한 메모리를 실제로 찾아내고 해제하는 ..
2024.07.09 -
Spring Security @EnabledWebSecurity 의 동작원리
Spring Security? Spring의 공식문서에 따르면, Spring Security는 강력하고 사용자 정의가 가능한 인증 및 액세스 제어 프레임워크입니다. (Spring 기반 애플리케이션 보안을 위한 사실상의 표준)Java 어플리케이션에 인증 및 권한 부여를 제공하는 데 중점을 둔 프레임 워크라고 할 수 있죠.인증 및 권한 부여에 대한 포괄적이고 확장 가능한 지원세션 고정, 클릭재킹, 크로스 사이트 요청 위조 등과 같은 공격으로부터 보호서블릿 API 통합Spring Web MVC와의 선택적 통합 등… 다양한 특징을 가지고 있습니다! @ 어노테이션 그렇다면 제목의 EnabledWebSecurity앞에 붙어있는 @는 무엇일까요?이해를 위해서는 메타데이터 라는 개념을 짚고 넘어갈 필요가 있습니다! 메..
2024.06.17 -
RabbiqMQ란 무엇일까?
RabbitMQ 얼랭(Erlang)언어로 AMQP를 구현한 오픈소스 메세지 브로커. *얼랭 : 함수형 프로그래밍 언어 (C와 비슷한 성격의 언어라고 볼 수 있겠다.) 메시지 브로커란? Publisher(송신자)로부터 전달받은 메시지를 Subscriber(수신자)로 전달해주는 중간 역할이며 응용 소프트웨어 간에 메시지를 교환할 수 있게 한다. 즉, 소프트웨어끼리 메세지를 서로 교환할 수 있도록 중간에서 알선해주는 녀석이다.(미들웨어 라고 칭함) AMQP client application과 middleware broker와의 메세지를 주고 받기 위한 프로토콜 메시지 브로커가 어플리케이션(소프트웨어) 사이에서 메시지를 중개해주는 녀석이라고 했다. 양측의 어플리케이션에서 받은 메세지를 퍼나르기위한 규칙이자 방법..
2023.02.15 -
[Docker] 도커와 컨테이너
개발에 조금이라도 발을 담가봤다면 대부분 '도커'라는 개념을 들어본 적이 있을 것이다. 필자의 경우 주위에서 '도커 참 좋더라~' 라고 하는데, '그래서 도커가 뭔데..?' 라는 생각이 머리를 맴돌았다. 그 후 도커에 대한 내 생각의 흐름은 이렇게 흘러갔다. 대충 구글에 도커 검색 -> 아~ -> (1주일 뒤) 도커가 뭐더라? -> 대충 구글에 도커 검색 -> 아~ 이 무한의 굴레를 끊고자.. 제대로 마음잡고 도커에 대해 공부하고 직접 실습해보며 어느 정도 감을 잡기 시작했다. 그 좌충우돌의 과정을 한 달이 지난 이제서야 포스팅으로 정리해보려 한다. (포스팅으로 정리하는건 배우는 것과 별개로 정말 어렵고 번거롭다..흑흑.. 모든 블로거들에게 무한한 존경을..) 도커에 대한 개념을 쉽게 훑어보고, '정확한..
2022.08.12