오늘의하루

[SourceCode.io] 1차 성능 테스트 : 분석 및 해결책 본문

Spring/SourceCode.io 프로젝트

[SourceCode.io] 1차 성능 테스트 : 분석 및 해결책

오늘의하루_master 2024. 3. 28. 15:02

프로젝트 소개

SourceCode.io 프로젝트는 클라이언트가 제공한 zip 파일을 분석하여 원하는 형태의 문자를 추출하여 문서화하고, 동시에 해당 zip 파일의 구조를 반환합니다. 또한, 커스텀 빌드 프로세스를 통해 서버에 zip 파일 형태로 소스 코드를 전송한 후, 해당 코드에 한글이 있는지 확인하고 한글의 개수와 위치를 클라이언트에게 반환합니다.

목표 및 배경

Apache JMeter를 사용하여 SourceCode.io 프로젝트의 부하 테스트를 수행하여 성능을 평가하고 사용자가 원활하게 이용할 수 있도록 성능을 향상시키는 것이 목표입니다.

환경 설정

  • Apache JMeter version : 5.6.3
  • Spring boot version : 3.2.2
  • Java version : 17

시나리오

JMeter를 사용하여 100명의 가상 사용자가 동시에 100MB 크기의 zip 파일을 서버에 첨부하고, 해당 파일을 분석한 후 결과를 반환하도록 시나리오를 작성했습니다.

테스트 결과

부하 테스트를 수행한 결과, 사용자의 요청 후 응답까지의 평균 속도와 서버가 처리할 수 있는 양에 집중해야 한다는 것을 확인했습니다.

  • Throughput : 10.2/min
  • Average : 351,514ms

결과 분석

요청 후 응답까지의 시간이 오래 걸리는 이유는 서버가 첨부된 파일을 직접 저장하고 압축 해제 및 분석 작업을 수행하기 때문에 디스크에 접근하여 작업하는데 있어서 성능상의 한계가 드러났습니다.

문제 파악 및 해결 방안

디스크에 직접 접근하여 작업하는 것보다 메모리에서 작업하도록 수정하고, 데이터를 일부분씩 분할하여 작은 메모리에서도 처리할 수 있도록 설계를 변경함으로써 메모리 효율성을 높이고 디스크보다 빠른 메모리를 사용하여 처리 속도를 향상시킬 것입니다.

Comments