일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- JPQL
- eager
- shared lock
- exclusive lock
- dfs
- PS
- 이진탐색
- 스프링 폼
- 유니크제약조건
- SQL프로그래밍
- 데코레이터
- 지연로딩
- 다대다
- BOJ
- CHECK OPTION
- fetch
- 비관적락
- querydsl
- 동적sql
- FetchType
- 즉시로딩
- 스토어드 프로시저
- 백트래킹
- 연결리스트
- 낙관적락
- 힙
- 연관관계
- 일대다
- 다대일
- execute
- Today
- Total
목록모니터링 (8)
흰 스타렉스에서 내가 내리지
응답시간(Response Time) 클라이언트가 서버에 요청을 하고 그 요청에 대한 응답을 받을 때까지 걸린 시간을 의미한다. 응답 시간은 아래의 두가지로 분류 가능하다. 처리 시간(Processing Time) : 실제 서버가 요청을 처리하는데 걸린 시간 대기 시간(Latency Time) : 클라이언트와 서버간에 데이터를 주고 받는데 걸리는 시간 응답시간(Respose Time) = [동시 사용자 수 / 초당 요청 수(TPS)] - 인지시간(Think Time) TPS(Throughput) 서버가 초당 처리할 수 있는 요청의 개수를 나타낸다. TPS 가 높을 수록 초당 처리할 수 있는 요청의 수가 많다. 초당 요청 수(TPS) = 동시 사용자 수 / 응답시간(Response Time) + 인지시간(T..
# 1. 슬랙에서 할 것 https://api.slack.com/ Slack은 생산성 플랫폼입니다 Slack은 팀과 커뮤니케이션할 수 있는 새로운 방법입니다. 이메일보다 빠르고, 더 조직적이며, 훨씬 안전합니다. slack.com - [Your apps] 버튼 클릭! - [Create New App] 누르고 [From scratch] - [App Name] 에는 Bot의 이름 - 그 아래에는 봇이 생성될 우리 워크스페이스를 골라주면 된다 - [Bots] 눌러 - 페이지가 이동되었을 것입니다. 좌측 메뉴에서 [OAuth & Permissions] 눌러줘요 - 페이지를 내리다 보면, [Scopes] 가 있다. - [Add an OAuth Scope] 를 누르고 슬랙 봇이 가질 권한을 선택해주자. - 우선 아..
# 1. 모니터링 서버 생성 애플리케이션 서버와 모니터링 서버를 분리하기로 하였다. ec2 인스턴스를 새로 만들고, 테스트를 위해 임시 스프링부트 프로젝트를 실행했다. # yum update # timezone # java 설치 # git 설치 # docker 설치 yum install docker -y # docker 시작 systemctl start docker # docker-compose 설치 curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-..
# 모니터링 3단계 대시보드 애플리케이션 추적 - 핀포인트 로그 # 모니터링 대상 시스템 메트릭 (CPU, 메모리) 애플리케이션 메트릭 (톰캣 쓰레드 풀, DB 커넥션 풀, 애플리케이션 호출 수) 비즈니스 메트릭 (주문수, 취소수) # 애플리케이션 추적 - 주로 각각의 HTTP 요청을 추적, 일부는 마이크로 서비스 환경에서 분산 추적 * 제품 👍핀포인트(오픈소스), 스카우트(오픈소스), 와탭(상용), 제니퍼(상용) https://github.com/pinpoint-apm/pinpoint # 로그 - 가장 자세한 추적, 원하는대로 커스텀 가능 - 같은 HTTP 요청을 묶어서 확인할 수 있는 방법이 중요, MDC 적용 → 예를 들어, 로그 앞부분에 사용자 UUID를 붙인다. [7d93e] * 파일로 직접 로..
# 기본 코드 제작 http://localhost:8080/order : 주문 - 재고 1 감소 http://localhost:8080/cancel : 취소 - 재고 1 증가 http://localhost:8080/stock : 현재 재고 리턴 - 현재 재고는 AtomicInteger 변수형을 사용한다. @Configuration public class OrderConfigV0 { @Bean OrderService orderService(){ return new OrderServiceV0(); } } - OrderService 빈 등록 @Import(OrderConfigV0.class) @SpringBootApplication(scanBasePackages = "hello.controller") publ..
# 실무에서 많이 발생하는 대표적인 문제 CPU 사용량 초과 JVM 메모리 사용량 초과 커넥션 풀 고갈 에러 로그 급증 # CPU에 부하를 주는 코드 추가 @Slf4j @RestController public class TrafficController { @GetMapping("/cpu") public String cpu(){ log.info("옛다 cpu 부하!!!!!"); long value = 0; for (long i=0; i< 100000000000L; i++){ value++; } return "ok value = " + value; } } # cpu 부하 주는 api 실행 # JVM 메모리 사용 누적하는 코드 private List list = new ArrayList(); @GetMappi..
# 프로메테우스 - 애플리케이션에서 발생한 메트릭을, 그 순간 뿐이 아닌 과거 이력까지 확인하려면 메트릭을 보관하는 DB가 필요하다. - 프로메테우스는 메트릭을 지속해서 수집하고 저장하는 DB 역할을 한다. # 그라파나 - 프로메테우스가 DB이면, 이 DB에 있는 데이터를 불러와서 사용자에게 보여주는 대시보드가 필요하다. - 그라파나는 매우 유연하고, 데이터를 그래프로 보여주는 툴이다. - 프로메테우스를 포함한 다양한 데이터소스를 지원한다. # 프로메테우스 - 애플리케이션 설정 프로메테우스가 우리 애플리케이션의 메트립을 수집하도록 연동하는데 필요한 2가지 작업 1. 애플리케이션 설정 : 프로메테우스 포멧에 맞추어 메트릭 만들기 2. 프로메테우스 설정 : 프로메테우스가 우리 애플리케이션의 메트릭을 주기적으..
- 세상에는 수 많은 모니터링 툴이 있고, 시스템의 다양한 정보를 이 모니터링 툴에 전달해서 사용하게 된다. - 모니터링 툴이 작동하려면 시스템의 다양한 지표들을 각각의 모니터링 툴에 맞도록 만들어서 보내줘야 한다. - Micrometer 라는 라이브러리는 여러 개의 모니터링 툴에 맞게 추상화를 해 두었다. - CPU, JVM 등등 여러가지 메트릭(측정 지표)들을 마이크로미터가 제공하는 표준 측정 방식에 맞춰서 보내준다. - 개발자는 마이크로미터가 정한 표준 방법으로 메트릭을 전달하면 되고, 사용하는 모니터링 툴에 맞는 구현체를 선택하면 된다. - 스프링 부트 액츄에이터는 마이크로미터를 기본으로 내장해서 사용한다. # 메트릭 확인하기 http://localhost:8080/actuator/metrics ..