일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- elasticsearch
- springboot
- Design Patterns
- Oracle
- Spring
- Spring Batch
- java
- db
- redis
- Spring Boot
- ReactJS
- devops
- Git
- it
- ubuntu
- IntelliJ
- 요리
- php
- 맛집
- jenkins
- laravel
- javascript
- AWS
- MySQL
- tool
- Gradle
- linux
- jsp
- Web Server
- JVM
- Today
- Total
목록2024/12 (4)
아무거나
Java 21 Virtual Thread해당 글은 kakao tech meet 발표 을 참고하여 필요한 부분만 요약하여 정리하였다. Virtual ThreadJDK 21(LTS) 에 추가된 경량 스레드 OS 스레드를 그대로 사용하지 않고 JVM 내부 스케줄링을 통하여 수십 ~ 수백만개의 스레드를 동시에 사용할 수 있게 한다. 해결하고자 하는 문제애플리케이션의 높은 처리량(throughput) 확보Blocking 발생시 내부 스케줄링을 통해 다른 작업을 처리자바 플랫폼 디자인과 조화를 이루는 코드 생성기존 스레드 구조 그대로 사용sealed abstract class BaseVirtualThread extends Thread permits VirtualThread, ThreadBuilders.Bound..
원인원인은 Redis 의 Packet Loss 가 발생하였고 해당 애플리케이션의 전체 Pod 에서 OOM 이 발생하면서 재시작되는 현상이였고 Pod 의 Heap 메모리 사용량은 여유가 있는 상태였습니다.왜 이러한 문제가 발생하였는지 알아보겠습니다. 컨테이너에서 OOM 발생먼저 서버로그를 확인해본 결과 Gzip 압축 적용후에 점진적으로 메모리 사용량이 증가한 내용이 확인되었다. 또한 컨테이너에 OOM Kill 도 발생한 것을 확인할 수 있었다. 그러나 이상한점은 Heap Memory 는 정상적인 수치로 확인되었다. 원인분석Native Memory 에서 OOM 이 발생하였고, Heap Memory 는 정상 적이라 애플리케이션 코드에 문제가 있다고 판단 하였고 관련하여 상기 언급 되었던 배포 항목중 gzip..
Spring Batch + Redis Pipeline 으로 구현한 성능 개선코드 참고는 https://github.com/bkjeon1614/java-example-code/tree/develop/spring-batch-mybatis-codebase 에서 참고 부탁드립니다.Redis Pipeline 이란Redis의 pipeline은 여러 개의 명령어를 한 번에 보내고, 그 결과를 한 번에 받아올 수 있는 메커니즘입니다. 이를 통해 네트워크 오버헤드를 줄이고 Redis 서버의 처리 성능을 최적화할 수 있다. 또한 주의해야할 점은, Redis 서버의 처리량(capacity)을 고려하여 pipeline의 chunk size를 결정해야 한다.주의사항Request Chunk Size: 먼저 요청하는 chunk s..
Java Mutex(뮤텍스) 와 Semaphore(세마포어) 그리고 Spinlock(스핀락)참고코드 Mutex(뮤텍스)Mutex 는 Mutual Exclusion(상호 배제)의 약자이며 Lock(락) 이라고도 한다. Mutex 는 한 번에 하나의 스레드만이 특정 리소스나 코드 섹션에 접근할 수 있도록 한다. 즉, 한 시점에 단 하나의 스레드만이 리소스를 사용할 수 있게 된다. (Lock/UnLock)또한 Java 에서는 ReentrantLock 라는 Lock 인터페이스가 존재하는데 이걸 활용해서 Lock 의 획득과 해제에 대한 부분을 제어할 수 있다. [LockController.java]// 예제코드@RestController@RequestMapping("v1/lock")@RequiredArgsCons..