Application Servers & Java

JBoss 장애 사례: MIME 업로드, 라이브러리 중복, 네트워크 연동 오류

midworker 2025. 5. 15. 22:22
반응형

JBoss 장애 사례: MIME 업로드, 라이브러리 중복, 네트워크 연동 오류

이번 글에서는 다음과 같은 실무 장애 사례를 다룹니다:

  • 대용량 파일 업로드 시 오류 발생
  • 라이브러리 중복으로 인한 ClassLoader 충돌
  • Web → WAS 연동 지연 및 잘림
  • IP 포워딩 오류 등 네트워크 연계 문제

✅ 1. 대용량 파일(MIME) 업로드 시 오류

🔹 증상

  • 업로드 중간에 연결 끊김
  • 파일이 서버에 저장되지 않음

🔹 원인

  • Apache LimitRequestBody, RequestReadTimeout 등 기본 설정 제한
  • JBoss MultipartConfig 미설정

🔹 해결 방법

Apache 설정 (httpd.conf)

LimitRequestBody 52428800         # 50MB
RequestReadTimeout body=30,minrate=500

JBoss web.xml

<multipart-config>
  <max-file-size>52428800</max-file-size>
  <max-request-size>52428800</max-request-size>
  <file-size-threshold>0</file-size-threshold>
</multipart-config>

✅ 2. 라이브러리 중복 문제

🔹 증상

  • ClassCastException, NoSuchMethodException 등 발생
  • ClassLoader 충돌 로그 다수 발생

🔹 원인

  • EAR/JAR/WAR 내부에서 동일 클래스 중복 로딩
  • 동일 버전의 라이브러리가 여러 위치에 존재

🔹 해결 방법

  • 공통 라이브러리는 modules/ 하위로 이동
  • jboss-deployment-structure.xml 활용하여 의존성 명시
<deployment>
  <dependencies>
    <module name="org.apache.poi" services="import"/>
  </dependencies>
</deployment>

✅ 3. Web → WAS 요청이 끊기거나 지연됨

🔹 증상

  • 화면 일부가 느리게 뜨거나, 응답이 중간에 잘림
  • form 데이터가 끝까지 전달되지 않음

🔹 원인

  • RequestReadTimeout, ProxyTimeout, connectionTimeout 미설정
  • Apache와 JBoss 간 포트/keep-alive 설정 불일치

🔹 해결 방법

Apache 설정 (proxy)

ProxyTimeout 60
ProxyPass / ajp://localhost:8009/ connectiontimeout=60

JBoss connector 설정

<connector name="ajp" ... connection-timeout="60000"/>

✅ 4. 포워딩 IP 문제

🔹 증상

  • 로그나 시스템 상에 클라이언트 IP가 127.0.0.1로 나타남

🔹 원인

  • Apache → JBoss AJP 연동 시 X-Forwarded-For 헤더 미처리

🔹 해결 방법

<http-listener ... proxy-address-forwarding="true"/>
  • 또는 Java 소스에서 X-Forwarded-For 헤더 직접 추출 필요

✅ 마무리

이번 글에서는 네트워크 연계 시 자주 발생하는 실무 장애들과
라이브러리 구조상 문제로 인해 생기는 ClassLoader 오류까지 다뤘습니다.
다음 편에서는 세션, 로그, 배포와 관련된 장애 사례를 소개합니다.

반응형