모니터mutual exclusion(상호배제)를 보장조건에 따라 스레드가 wait 상태로 전환 가능모니터는 언제 사용할까?한번에 하나의 스레드만 실행돼야 할 때여러 스레드와 협업(cooperation)이 필요할 때구성요소mutex (Mutual Exclusion Object)Critical section(임계영역)에서 mutual exclusion을 보장하는 장치Critical section에 진입하려면 mutex lock을 취득해야 함mutex lock을 취득하지 못한 스레드는 큐에 들어간 후 wait 상태로 전환mutex lock을 쥔 스레드가 lock을 반환하면 대기 중인 스레드 하나가 실행Condition variableWait queue(조건이 충족되길 기다리는 스레드들이 대기상태로 머무르는 곳..

Pageable Spring data core api에서 제공하는 인터페이스 JPA Repository 메소드 파라미터에 Pageable 객체를 넣어주면 자동으로 페이지네이션 적용 public interface UserRepository extends JpaRepository { List findByLastname(String lastName, Pageable pageable); } 반환타입 : Page, Slice, List Page : 페이지 + totalCount Slice : 페이지 + 전후 슬라이스 존재 여부 List : 페이징 안된 전체리스트 PageRequest 페이징 요청 정보 생성 쿼리스트링으로 사용하는 법 컨트롤러에 파라미터로 PageRequest 삽입 쿼리스트링에 page=3&size..

우선순위 큐 우선순위가 가장 높은 데이터를 가장 먼저 삭제하는 자료구조 데이터를 우선순위에 따라 처리하고 싶을 때 사용 대표적인 우선순위 구현 방법 : 리스트, 힙(heap) 자료구조 → 힙 자료구조를 사용할 때 삽입&삭제 모두 O(logN) 힙(Heap) 자료구조 완전 이진트리 자료구조의 일종 항상 루트 노드를 제거한다. 최소 힙 (min heap) 루트 노드가 가장 작은 값을 가진다 값이 작은 데이터가 우선적으로 제거된다 최소 힙 구성 함수 : Min-Heapify() 최대 힙 (max heap) 루트 노드가 가장 큰 값을 가진다 값이 큰 데이터가 우선적으로 제거된다 🅰️ Heap 더미, 쌓다, 수많은, 엄청난 완전 이진 트리 (Complete Binary Tree) 루트노드부터 시작하여 왼쪽 자식 ..

이전에 대량의 엑셀다운로드 처리 중 cpu가 급증하는 문제가 생겨 이를 해결한 내용을 다룬 적이 있는데요 그땐 시간이 없어서 그냥 XSSF에서 SXSSF로 바꾸면 되는구나~라고만 하고 넘어갔는데 SXSSF 컴포넌트는 어떻게 메모리를 관리하는건지 궁금해져서 공식문서를 다시 찬찬히 읽어봤습니다 이전 포스팅 👇 [Apache POI] 다량의 데이터 엑셀 다운로드 처리로 인한 서버 장애 대응 후기 스테이징 QA 도중 갑자기 사이트의 모든 기능이 먹통이 됐다는 소식을 들었습니다. 확인해보니 CPU 사용량이 급증하여 서버가 다운됐던 것이었습니다. 우선 서버를 재부팅하여 먹통 문제는 해결 jibsakim.tistory.com 공식문서에서의 SXSSF에 대한 설명을 보면 슬라이딩 윈도우(sliding window)가 ..

Java Bean이란 자바 빈이란, 3가지 규칙을 지키는 클래스이다 모든 필드는 private이며, getter/setter 메서드를 통해서만 접근이 가능하다 argument가 없는 (no-argument) 생성자가 존재한다 java.io.Serializable 인터페이스를 구현한다 import java.io.Serializable; public class SomeBean implements Serializable { private String beanName; private int beanValue; public SomeBean() { // no-argument constructor } public String getBeanName() { return beanName; } public void setB..

스테이징 QA 도중 갑자기 사이트의 모든 기능이 먹통이 됐다는 소식을 들었습니다. 확인해보니 CPU 사용량이 급증하여 서버가 다운됐던 것이었습니다. 우선 서버를 재부팅하여 먹통 문제는 해결하였고, 원인을 찾아 나섰습니다. 지난 새벽 배포 때 다른 서버(노드)에서 몇만건정도의 데이터 엑셀 다운로드를 몇차례 시도했을때도 CPU 사용량이 급증했던 것이 기억나서 그 부분을 이번 서버(자바)에서도 확인해보기로 했습니다. 엑셀 다운로드 시도할 때마다 CPU 사용량이 급증하는 것을 확인했습니다. RDS는 이상 없고 EC2만 다운된 걸로 보아 서비스단에서 다량의 데이터를 처리하다 무언가 과부하가 걸렸을 것으로 추측했습니다. 로컬에서 상용DB를 연결하여 재현해보니 아래와 같은 에러 로그가 발생했습니다. org.apach..
- Total
- Today
- Yesterday
- sre
- php
- java
- 몽고디비
- 쿠버네티스
- 샤딩
- k8s
- Infra
- 분산처리
- NoSQL
- mongoDB
- docker
- springboot
- laravel 테스트코드
- mockery
- 리눅스 컨테이너
- 라라벨
- phpUnit
- MySQL
- 백엔드
- database
- laravel 테스트
- pods
- Container
- 주니어개발자
- kubernetes
- devops
- index
- laravel
- 대규모 데이터 처리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |