성능테스트
-
spin lock은 cpu에 얼마나 부하를 줄까?성능테스트 2024. 10. 7. 01:00
대상 독자spin lock에 대해서 알고 싶으신 분들 spin lock이 실제 cpu에 얼마나 부하를 주는지 궁금하신 분들 개요소프트웨어를 개발하거나, 외부 라이브러리들을 활용하다 보면 종종 spin lock으로 구현되어 있는 경우를 발견할 수 있습니다. 이런 경우 while 등의 반복문을 활용해서 매번 체크하는 로직이 포함되는데 spin lock은 cpu에 부하를 주지 않을까? 라는 궁금즘이 생겼습니다. 만약 spin lock 방식을 소프트웨어에 활용하면 cpu에 얼마나 부하를 줄게 될까요? Spin Lock이란 무엇인가?fun getLock() { while(true){ if(락 획득) return else 반복하면서 락 획득 시도 }} spin lock은 임..
-
Gatling으로 성능테스트 하기성능테스트 2023. 11. 20. 00:01
개요 성능테스트를 편하게 하는 방법을 찾다 보니 Gatling이라는 부하 테스트 도구를 알게 되어 도입 및 적용사례를 공유하고자 합니다. Gatling이란? HTTP 서버 부하 테스트에 적합한 도구로 표현형 DSL을 기반으로 성능테스트를 작성할 수 있습니다. non blocking 방식을 활용하여 가상 사용자를 구현하며 이를 통해 리소스를 저렴하게 사용할 수 있습니다. 수천 명의 가상사용자를 동시에 실행해도 문제가 되지 않습니다. 지원되는 버전 JDK LTS버전에서 지원됨(8, 11, 17) gradle pulgin으로 Setup plugins{ id("io.gatling.gradle") version "3.9.5.1" } gradle 프로젝트에서 간단한 설정을 넣어주면 바로 사용할 수 있습니다. gra..
-
[Mac] homebrew jmeter 설치 및 테스트성능테스트 2023. 11. 19. 00:01
homebrew란? macOS의 패키지 관리 소프트웨어로써 쉽게 설치/삭제를 할 수 있도록 지원합니다. Homebrew로 설치 & 실행 터미널에서 설치 brew install jmeter 터미널에서 실행 open /opt/homebrew/bin/Jmeter Jmeter UI Jmeter란? Apache에서 자바로 만든 웹 애플리케이션 성능 테스트 오픈 소스입니다. 위의 그림과 같은 GUI를 지원합니다. JMeter 테스트 용어 - Thread Group : 테스트에 사용될 스레드 개수, 스레드 1개당 사용자 1명 - Sampler : 사용자의 액션 (예: 로그인, 게시물 작성, 게시물 조회 등) - Listener : 응답을 받아 리포팅, 검증, 그래프 등 다양한 처리 - Configuration : S..
-
Tomcat Thread의 수는 얼마나 늘리는게 좋을까?성능테스트 2023. 8. 9. 00:01
개요 "Tomcat의 Thread의 수는 얼마나 늘리는 게 좋을까요?"라는 궁금증을 가지고 포스팅을 시작합니다. 다음은 Apache Tomcat의 공식문서에 대한 maxThreads의 설명입니다. The maximum number of request processing threads to be created by this Connector, which therefore determines the maximum number of simultaneous requests that can be handled. If not specified, this attribute is set to 200. If an executor is associated with this connector, this attribute i..
-
JVM Memory Leak 만들고 탐지, 개선하기성능테스트 2023. 7. 14. 00:01
개요 memory Leak은 보통 개발자의 실수로 발생할 수 있습니다. 사내에서 Socket과 관련된 코드를 작성하며 Close를 수행하는 절차에서 Memory Leak이 발생시켰던 코드를 예시로 의도적으로 memory Leak을 만들어내고 이를 탐지, 개선하는 작업을 수행해보고자 합니다. Memory Leak이란? 메모리 누수현상이란 프로그램이 필요하지 않은 메모리를 계속 점유하고 있는 현상을 말합니다. Java에서는 GC가 지속적으로 사용하지 않는 객체를 회수하지만 GC에 의해 회수되지 않고 계속 누적되는 현상입니다. 주로 List, HashMap 같은 콜렉션에 해당하는 객체를 해제하지 않고 계속 유지하다 보면 발생하게 됩니다. Memory Leak이 발생하게 되면 어떻게 될까? Memory Lea..
-
의미있는 성능테스트성능테스트 2023. 7. 9. 00:01
개요 성능테스트를 진행하면 어떤 환경에서 진행하는 게 의미 있을까? 그리고 각 용어는 어떤 것을 의미하고 어떤 값으로 세팅하는 게 적절할까? 성능테스트의 병목지점은 어떻게 확인할 수 있을까? 1000명의 vUser를 세팅하고, 3000명의 vUser를 세팅하는 등 성능테스트를 진행해 보았지만 몇 명의 vUser가 적절한지 그리고 local환경에서 진행하는 것과 aws 환경에서 진행하는 것의 차이 등에 대해 알아보는 시간을 가지려고 합니다. 성능 테스트 무엇이 목적일까? 서버는 갑자기 사용자가 많아지면 점점 느려지고, 제대로 동작하지 않을 수 있습니다. 성능 테스트를 위해 이를 방지하기 위해 아래와 같은것들을 파악합니다. API의 성능을 측정하고 병목지점이 발생한다면 이를 파악 및 튜닝 CPU 사용률, 메..
-
nGrinder란? (설치 및 부하 테스트)성능테스트 2023. 1. 8. 00:01
[1] nGrinder vs Jmeter [2] nGrinder란? (설치 및 부하 테스트) 개요 이전 포스팅에서는 nGrinder와 Jmeter에 대해 비교해보고 nGrinder를 사용하고자 했습니다. nGrinder가 무엇인지 조금 더 상세하게 알아보고 실제로 설치 및 부하 테스트를 진행해보겠습니다. nGrinder란? 네이버에서 진행한 오픈 소스 프로젝트로 서버의 부하 테스트를 위한 도구입니다. nGrinder는 어떻게 동작하는가? nGriner는 2가지의 중요한 컴포넌트인 Controller와 agent로 구성되어 있습니다. nGrinder Controller - 성능 테스터가 테스트 스크립트를 생성하고 테스트 실행을 구성할 수 있도록 하는 웹 애플리케이션 Agent - 대상 시스템에 부하를 주는..
-
nGrinder vs Jmeter성능테스트 2023. 1. 7. 00:01
[1] nGrinder vs Jmeter [2] nGrinder란? (설치 및 부하 테스트 with Docker) 개요 성능 테스트를 위해 오픈소스를 비교해보고 어떤 것을 사용할지 결정하고자 합니다. 성능 테스트는 주로 시스템이 운용 조건(사용자, 네트워크 등)에서 얼마나 안정적일 수 있는지에 대한 평가를 포함합니다. 성능을 평가하기 위한 상위 지표에는 페이지 응답 시간, 네트워크 응답성, 서버 요청 처리속도 및 메모리 소비 패턴이 포함됩니다. 이는 갑자기 사용량이 급증하는 동적 시스템을 개발하기 위한 매우 중요한 요소입니다. Jmeter란? Apache에서 만들었으며 순수하게 자바로 만들어진 웹 애플리케이션 성능 테스트 오픈 소스입니다. GUI를 제공하며 Logic controller라고 불리는 기능은..