DEV-STUDY/Spring

[Spring] 성능 최적화 및 모니터링 도구

HwangJerry 2023. 9. 15. 23:18

어플리케이션 성능 모니터링

어플리케이션 성능 모니터링(APM)은 어플리케이션의 성능을 실시간으로 모니터링할 수 있도록 해주는 도구입니다. 이를 통해 개발자는 어플리케이션의 성능을 실시간으로 확인하고 분석할 수 있습니다.

 

  • Spring Boot Actuator : 스프링 부트 어플리케이션의 상태를 모니터링하고 관리하는 데 사용되는 모듈입니다. Actuator를 사용하면 어플리케이션의 상태, 메트릭, 빈, 스레드 등을 확인할 수 있습니다. Actuator는 spring boot starter에 등록되어 있습니다.
  • 그 외에 Micrometer와 같은 모니터링 시스템 구현체도 있습니다.

 

로깅 및 로그 분석

어플리케이션 로그는 어플리케이션의 동작과 관련된 중요한 정보를 담고 있습니다. 로그를 효과적으로 관리하고 분석하면 문제를 신속하게 파악하고 해결할 수 있습니다. 스프링 부트에서는 SLF4J와 LogBack을 기본 로깅 프레임워크로 사용합니다.

 

성능 최적화 전략

성능 최적화는 어플리케이션의 응답 속도를 높이고 리소스 사용량을 줄이는 과정입니다. 다음과 같은 전략을 사용하여 스프링부트 어플리케이션의 성능을 최적화할 수 있습니다.

  • JVM 옵션 설정 : 가비지 컬렉션 전략, 메모리 설정, JIT 컴파일러 설정 등을 통해 어플리케이션의 성능을 향상시킬 수 있습니다.
    • GC 알고리즘 선택 : 목적에 따라 Throughput(처리량) 또는 ResponseTime(응답 속도) 관점에서 튜닝 진행
      • Parallel GC : "처리량"이 중요한 시스템에서 주로 사용. Full GC 수행시 compaction 작업이 수행되므로 GC 시간 자체는 많이 소요되나, stop the world 시간이 일정함
      • CMS GC : 응답시간이 중요한 시스템에서 주로 사용. compaction을 수행하지 않아 stop the world 시간이 짧지만, 자원 사용량이 증가하며, compaction이 자주 발생하는 시스템의 경우 Full GC보다 compaction 시간이 오래 걸릴 수 있음
      • G1 GC : 성능적으로는 가장 우수한 GC 알고리즘이며, java 9 이후 default GC 알고리즘으로 채택됨.
Throughtput 관점 GC ResponseTime 관점 GC
주어진 시간 내에 최대한 많은 일을 처리하는 것을 목적으로 하는 GC 요청에 대한 응답시간 측면에서 성능을 높이기 위한 GC
대표 GC 알고리즘 : Perallel GC 대표 GC 알고리즘 : CMS GC, G1GC
java -Xms256m -Xmx512m -XX:+UseG1GC -jar myapp.jar
  • 캐싱 적용 : 자주 사용되는 데이터나 연산 결과를 캐시에 저장하여 성능을 향상시킬 수 있습니다. 스프링 부트에서는 EhCache, Redis, Hazelcast 등 다양한 캐싱 라이브러리를 사용할 수 있습니다.
@EnableCaching
@Configuration
public class CacheConfig {
	@Bean
    public CacheManager cacheManager() {
    	return new ConcurrentMapCacheManager("sampleCache");
    }
}
  • 데이터베이스 최적화 : 인덱스 생성, 쿼리 최적화, 커넥션 풀 설정 등을 통해 데이터베이스의 성능을 향상시킬 수 있습니다.
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: user
    password: password
    hikari:
      maximumPoolSize: 10
  • 비동기 처리 : 비동기 방식으로 작업을 처리하여 어플리케이션의 응답 속도를 높일 수 있습니다.
@Service
public class SampleService {
    @Async
    public CompleteFuture<String> asyncMethod() {
    	// 비동기 처리 로직
    }
}

실제 환경에서 가장 효과적인 성능 최적화 방법을 찾으려면 프로파일링, 벤치마킹 등을 활용하여 어플리케이션의 성능을 체계적으로 분석해야 합니다.


출처:

 

[스프링 부트(SpringBoot) : 중급] 성능 최적화 및 모니터링 도구

8. 성능 최적화 및 모니터링 도구 8.1. 애플리케이션 성능 모니터링 애플리케이션 성능 모니터링(APM)은 애플리케이션의 성능을 실시간으로 모니터링하고 분석하는 도구입니다. 스프링 부트 애플

gdngy.tistory.com

 

 

JVM 옵션을 통한 성능 튜닝 이해

JVM의 옵션 튜닝은 JVM으로 기동 되는 미들웨어나 애플리케이션의 성능에 영향을 끼칠 수밖에 없다. 따라서 JVM 옵션의 튜닝 포인트를 명확히 이해하고 적용하는 것이 애플리케이션이나 미들웨어

sharplee7.tistory.com