성능테스트
-
spin lock 대신 Thread Waiting을 활용하면 성능이 얼마나 개선될까?성능테스트 2024. 11. 23. 09:38
개요spin lock 방식에서 cpu의 리소스가 얼마나 점유될지 궁금하여 성능 테스트하면서 글을 작성했습니다. 만약 spin lock 방식 대신 Thread Sleep 방식을 적용하면 cpu의 성능이 얼마나 개선될 수 있을까요? Thread Sleep 방식을 알아보기 전에 임계영역을 점유하는 방법인 metux에 대해 알아보겠습니다. mutex란?Mutex는 특정 구현보다는 이론적인 용어로써 임계 영역에 여러 스레드가 경합하는 것을 방지합니다. Thread A는 임계 영역에 들어가기 전 lock을 점유합니다. 이후 Thread B가 Thread A가 접근한다면 임계 영역에 진입하지 못하고 기다려야 합니다. 이후 Thread A가 unlock을 수행하면 Thread B가 접근할 수 있습니다. 일상생활적으로 ..
-
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 Leak이 지속되어 ..
-
의미있는 성능테스트성능테스트 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 - 대상 시스템에 부하를 주는..