성능 측정: p50·p95·p99, 측정 계층, JFR, JMH 함정, 자체 부하 테스트, 병목 순위
성능 측정 — JFR·JMH·부하 테스트
"느리다" 민원이 오면 감으로 고치지 않고, 어디가 왜 느린지 측정부터 합니다. JDK 내장 JFR 로 프로파일을 뜨고, 벤치마크 함정을 피하고, 자체 부하 테스트로 TPS 와 p95 를 재는 법을 정리합니다.
1. 왜 배우는가
운영 중인 화면이 "느리다"는 민원이 오면, 담당자가 가장 먼저 하는 실수는 코드를 눈으로 보고 짐작으로 고치는 것입니다. 캐시를 추가하거나 인덱스를 만들었는데 체감이 그대로거나 오히려 나빠지는 경우가 많습니다. 원인을 확인하지 않고 손을 대면 문제를 옮길 뿐, 없애지 못합니다.
성능 개선은 항상 같은 순서를 따라야 합니다. 측정으로 병목 위치를 찾고, 왜 느린지 원인을 확인하고, 고친 뒤 다시 측정해서 실제로 나아졌는지 검증합니다. 이 순서를 지키지 않으면 "고쳤다고 생각하는 것"과 "실제로 고쳐진 것"이 어긋납니다.
이 레슨은 Spring Boot·MyBatis·Oracle 조합의 실무 환경에서 측정 도구를 고르는 기준을 정리합니다. JDK 내장 JFR 로 프로파일링하고, 마이크로 벤치마크의 함정을 피하고, 외부 도구 없이 자체 부하 테스트를 만드는 법을 다룹니다. 코드는 java-src/extension/22_performance 에 있고 Main·Bench 두 파일로 구성됩니다.