오늘의하루

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

Spring/SourceCode.io 프로젝트

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

오늘의하루_master 2024. 3. 29. 11:49

개선 사항

첨부 파일을 디스크에 저장한 후 분석하던 기존의 방식에서 메모리로 처리하도록 변경하여, 데이터를 일부분씩 분할하여 작은 메모리에서도 처리할 수 있도록 설계를 변경했습니다.

환경 설정

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

시나리오

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

테스트 결과

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

  • Throughput 비교
    • 1차 테스트 : 10.2/min
    • 2차 테스트 : 1.5/sec
  • Average 비교
    • 1차 테스트 : 351,514ms
    • 2차 테스트 : 60,821ms

결과 분석

1차 테스트에 비해 Throughput은 약 7.82배, Average는 약 82.6% 개선되었습니다.

그러나 여전히 실제 이용에는 느린 응답 속도가 발생하므로 이를 개선해야 합니다.

문제 파악 및 해결 방안

기존의 분석 프로세스를 정리한 후 중복되거나 효율적으로 개선할 수 있는 부분을 식별하여 수정할 계획입니다.

또한, String 객체를 생성하고 작업하는 대신에 Stream을 활용하여 데이터를 효율적으로 처리할 수 있도록 코드를 변경할 예정입니다. 

이를 통해 객체 생성을 줄이고 메모리 사용을 최적화하여 응답 시간을 단축시키고 성능을 향상시킬 것입니다. 또한, 이를 통해 불필요한 시간 소요를 최소화하고 Heap 메모리 할당량 초과와 같은 문제를 방지할 수 있습니다.

Comments