본문 바로가기
CODE/햇감자코딩일지

WAS와 OS, 서로가 서로를 지목하는 메모리 누수 문제 감상..

by 솔리닉__ 2023. 9. 19.
반응형

 

때는 2023년 9월.. 어느날 회사에 알 수 없는 서버 부하가 발생했습니다. 결론부터 말씀드리면 아직까지 원인은 찾지 못했습니다. 그러나 서버가 부하될 때 인프라에서 각각 서로가 남탓을 하는 광경을 구경했습니다. 

 

WAS는 OS문제일 것이다, OS는 WAS의 문제일 것이다라고 확신에 차서 말하는 모습이 너무 아름다웠기에 이 포스팅을 남겨 아름다운 추억을 기억하고, 저는 도대체 둘이 왜 그랬을까에 대해서 찾아보았습니다. 지식은 기억과 함께 영원히 남습니다. 

 

 

 

WAS와 OS의 각각의 역할 및 책임

 

WAS의 역할과 책임 역할

 

  • 애플리케이션 서버

웹 애플리케이션을 호스팅하고, 사용자 요청을 처리하여 결과를 반환하는 역할을 합니다.

 

  • 미들웨어

데이터베이스와 웹 애플리케이션 간의 중개자 역할을 하며, 트랜잭션 관리, 보안, 메시징 서비스 등을 제공합니다.

 

  • 책임 퍼포먼스 최적화

애플리케이션의 성능을 모니터링하고 최적화하여 사용자에게 빠른 응답 시간을 제공해야 합니다. 보안: 적절한 인증 및 인가 메커니즘을 통해 애플리케이션의 보안을 유지해야 합니다.

 

  • 세션 관리

사용자 세션을 관리하여 효율적인 서비스를 제공해야 합니다.

 


 

OS의 역할과 책임

 

  • 역할 시스템 자원 관리

하드웨어 자원을 관리하고 프로세스, 메모리, 파일 시스템 등을 효율적으로 조절합니다.

 

  • 하드웨어 인터페이스

하드웨어와 소프트웨어 사이의 인터페이스 역할을 하며, 하드웨어 자원을 애플리케이션에 할당합니다.

 

  • 책임 시스템 안정성 유지

시스템의 안정성을 유지하기 위해 필요한 보안 패치 및 업데이트를 시행해야 합니다.

 

  • 자원 할당과 관리

효율적인 자원 할당과 관리를 통해 애플리케이션의 성능을 지원해야 합니다.

 

  • 오류 모니터링

시스템 로그를 통해 오류를 모니터링하고, 발생한 문제를 해결하거나 개선해야 합니다.

 

검토해야할 점

 

  • 메모리 누수

어플리케이션에서 발생하는 현상으로, 프로그램이 할당한 메모리를 제대로 해제하지 않아 시간이 지남에 따라 사용 가능한 메모리가 감소합니다. 이러한 문제는 성능 저하 및 시스템 충돌을 유발할 수 있습니다. WAS 리부팅 후 문제 해결: WAS를 재시작하면 일시적으로 문제가 해결되는 경우가 많습니다. 하지만 이는 임시적인 해결책이며, 근본적인 문제를 해결하지 않습니다.

 

  • OS 측이  검토할 점

OS 측에서는 다음과 같은 사항을 검토해 볼 수 있습니다: 시스템 로그: 시스템 로그를 확인하여 관련 오류 메시지나 경고를 찾습니다. 리소스 모니터링: CPU, 메모리, 디스크 등의 리소스 사용률을 모니터링합니다.

 

  • WAS 측이 검토할 점 

WAS 측에서는 다음과 같은 사항을 검토해 볼 수 있습니다: 애플리케이션 로그: 애플리케이션 로그를 확인하여 오류 또는 예외를 찾습니다. 메모리 덤프: 메모리 누수가 의심되는 경우, 메모리 덤프를 수행하고 분석하여 문제의 원인을 찾을 수 있습니다. 

 

결론

 

코드 최적화: 애플리케이션 코드를 검토하고 메모리 누수를 일으킬 수 있는 코드를 수정합니다.

 

시스템 업데이트 및 튜닝: OS 및 WAS를 최신 버전으로 업데이트하고, 시스템 튜닝을 통해 성능을 개선합니다. 

 

결론으로 가장 많이 나온 게 원인 파악이 쉽지 않으니, 그냥 전문가를 찾아..가라고 한다..ㅎ...

 

현재 저희팀에서 내린 결론은 다음과 같습니다. 지속적인 모니터링과 부하가 많이 나오는 쿼리들을 개선하고 메모리 증량, 라이브러리 버전 확인 등으로 검토중입니다 

반응형

댓글