Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 그리디
- 코딩테스트
- Java
- JPA
- 트러블슈팅
- SWEA
- JUnit
- 기본유형
- 그래프
- 싸피
- DFS
- 백준
- 완전탐색
- 코딩테스트실력진단
- 코테
- 알고리즘
- SSAFY
- Spring
- 부분수열의합2
- 유니온파인드
- database
- 알고리즘기본개념
- 코드트리
- Union Find
- 다시보기
- 자바
- 다익스트라
- BFS
- DP
- 완탐
Archives
- Today
- Total
HwangHub
[Spring] 성능 최적화 및 모니터링 도구 본문
어플리케이션 성능 모니터링
어플리케이션 성능 모니터링(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 알고리즘으로 채택됨.
- GC 알고리즘 선택 : 목적에 따라 Throughput(처리량) 또는 ResponseTime(응답 속도) 관점에서 튜닝 진행
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() {
// 비동기 처리 로직
}
}
실제 환경에서 가장 효과적인 성능 최적화 방법을 찾으려면 프로파일링, 벤치마킹 등을 활용하여 어플리케이션의 성능을 체계적으로 분석해야 합니다.
출처:
'DEV-STUDY > Spring' 카테고리의 다른 글
[Spring] 필드 인젝션을 피해야 하는 이유 (1) | 2023.09.30 |
---|---|
[Spring] HTTP Method로 알아본 "멱등성"이야기 (0) | 2023.09.28 |
[Spring] Validation 체크는 Controller의 몫이다. (0) | 2023.08.08 |
[Spring] @Bean과 @Configuration, @Component (0) | 2023.07.28 |
[JUnit] 토이 프로젝트 for JUnit practice : Bank App 2 - SecurityConfig (0) | 2023.07.27 |
Comments