OOME = Out Of Memory Error 간단히 잘 설명된 글 [Java Memory Profiling에 대하여] 1. JVM 메모리의 이해와 케이스 스터디 [Java Memory Profiling에 대하여] 2. 메모리 모니터링과 원인 분석 2차 가공이 불가능한 글이라 내용은 첨부하지 않는다. 오류의 예제 상황을 설명하고 있고, Grafana Heap Graph/jstat/mat 등을 통해 GC 실행 수/Memory 상황/dump 등을 보며 오류 상황을 확인할 수 있도록 제공하고 있다.
Flame Graph ? show the CPU time spent in Java methods, system libraries, and the kernel, all in one visualization. 해석하기 각 사각형은 stack frame을 나타낸다(즉, 함수). 사각형의 가로(width)는 현재 프로파일에 얼마나 존재하는지(실행되는지)를 나타낸다. Graph x축 왼쪽과 오른쪽 순서는 중요하지 않다. stack은 단순히 알파벳 순서대로 정렬된 것이다. y축 stack depth. 함수들간의 호출 depth. Stack의 색상들은 code type에 따라 설정된다. 보통 Java code는 초록색, C++ code는 노란색, System은 빨간색으로 설정된다. 하지만 다른 color scheme..
Pod spec 에는 restartPolicy 필드가 있다. Pod의 Container가 종료했을 때, 재시작 정책을 정의하는 필드이다. 3가지의 값을 허용한다. Always (default): Container들이 정상적으로 종료(zero exit code)되었더라도 재시작하는 정책. Container가 어떻게 종료되든 간에 무조건 구동 중이여야한다면 해당 옵션을 사용하는 것이 유용하다. OnFailure : Container가 비정상적으로 종료(non-zero exit code)하는 경우에만 재시작하는 정책. Pod가 특정 task를 수행하도록 설게되었고, 그 task가 완료(성공)되면 재시작하지 않는게 정상인 경우라면 해당 옵션을 사용하는 것이 유용하다. Never: Container의 exit c..
잘 모르면 몸이 고생한다고, Deployment replicas를 계속 변경하며 테스트 할 일이 있었는데 `kubectl edit` 으로 replicas를 변경해가며 사용했다. 근데 더 간단하게 CLI 상에서 replicas를 변경할 수 있는 `kubectl scale` 명령어가 있었다. # Scale a replica set named 'foo' to 3 kubectl scale --replicas=3 rs/foo # Scale a resource identified by type and name specified in "foo.yaml" to 3 kubectl scale --replicas=3 -f foo.yaml # If the deployment named mysql's current size i..
이 글의 주제인 File Permission 에 대해 이야기 하기 전에 글을 작성하게 된 계기를 먼저 이야기해보고자 합니다. 서버 개발을 하다보면 직접 원격 Linux 서버에 들어가 작업을 하는 경우가 많습니다. 그러던 중 File permission이 없어 작업을 진행할 수 없던 경우가 종종 있었는데요. 그럴 때마다 어떤 권한이 부족하고, 어떤 것이 원인인지 확실히 파악하지 못하니 답답했었습니다. Permission을 풀기 위해 그냥 구글링으로 chmod ~ 명령어를 가져와 사용하곤 했죠. 위와 같은 외계어(라고 생각했던 것)를 보면서 ‘File Permission 정보인 건 알겠는데, 어떻게 해석하고/어떻게 수정되는거지?’라는 궁금증이 들었습니다. 그래서 이 글에서 이 궁금증을 해소해보고자 합니다. ..
WebClient 를 사용하되, block 을 사용한다? 이게 RestTemplate 같은 Blocking 기반의 http client를 사용하는 것과 무엇이 다를까? 사실 단일으로 하나의 request를 다루는 것이라면 성능이 거의 같을 것이다. 어느정도 각 http client 구현도에 차이가 있을 수 있지만, 유의미한 차이가 있지는 않을 것이다. 아래는 아주 대충 작성해 본 예시 // WebClient var webclientResponse = WebClient.create("some-url").get().retrieve().bodyToMono(String.class); webclientResponse.block(); // RestTemplate var restTemplateResponse = ne..
작성하고 나니 여러 개념에 대해 단어들을 통일 시 못한 것 같네요. 혹시 이상한 점 있으면 편하게 피드백 부탁드립니다. 요즘 프로젝트에서 WebFlux를 적극적으로 다루고 있는데, just/defer/fromCallable를 다루다보니 조금 헷갈리는 점이 있어 정리해놓으려 한다. 모든 메서드는 Mono 를 중심으로 정리했다. just just는 구독 시 특정 값을 반환(emit)하는 메서드이다. 제일 기본적인 메서드이기 때문에 처음 Reactor를 공부하면 거의 제일 처음에 배웠던 것 같다. 공식문서를 보면 설명이 다음과 같다. Create a new Mono that emits the specified item, which is captured at instantiation time. 여기서 insta..
Transaction이 제공하는 안정성 보장(safety guarantee)은 흔히 원자성(Atomicity), 일관성(Consistency), 격리성(Isolation), 지속성(Durability)를 의미하는 ACID로 알려져있다. 많은 강의, 책에서 Transaction을 설명할 때, 필수적인 개념으로 등장하며 무조건 보장되어져야하고 모든 데이터베이스에서 지켜지고 있는 것처럼 설명한다. 하지만 현실에서는 참 애매모호하다. ACID의 의미가 모호한 부분이 있어서 데이터베이스마다 ACID 구현이 제각각이다. ACID에 대해 각각 살펴보자. Atomicity 원자성은 쓰기 작업 중 일부만 성공한 후 결함이 생기면 어떤 일이 생기는지 이야기한다. 여러 쓰기 작업이 하나의 원자적인 트랜잭션으로 묶여 있는데 ..
- Total
- Today
- Yesterday
- HTTP
- 일상
- 쿠버네티스
- tag
- k8s
- 백준
- 비동기
- 알고리즘
- 클린 아키텍처
- MySQL
- Algorithm
- 로그
- c++
- Istio
- 하루
- Clean Architecture
- OpenTelemetry
- java
- docker
- python
- boj
- Spring
- jasync
- Spring boot
- WebFlux
- Log
- container
- Intellij
- Kubernetes
- gradle
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |