[MySQL] The total number of locks exceeds the lock table size
·
Backend/MySQL
대규모 데이터를 삽입해서 테스트를 하기 위해 JDBC로 Batch Insert를 하고 있는데, 갑자기 제목과 같은 에러가 나타났다. user 데이터 1억 개, user 테이블을 참조하는 device_token 데이터 10억 개를 넣는데,이해가 안 가는 게 Batch size를 10,000으로 잡았을 때, user 데이터는 잘 삽입하더니 device_token 삽입할 때는 에러가 발생한다.  MySQL Error 1206, 데이터 엔지니어의 눈으로 바라보기★ 부제 : 데이터엔지니어와 데이터분석가의 경계 “The total number of locks exceeds the lock table size” 락의 총합이 락테이블 사이즈를 초과했다. 무슨 뜻일까? 냉큼 buffer_size를 늘이라고 해서 늘린다면..
[Spring Boot] Batch 성능 개선기 (+`24.07.25 추가 개선 및 테스트)
·
Backend/Spring Boot & JPA
📕 목차1. Introduction2. Reader3. Page offset4. Writer5. Improved Performance6. Additional Improvement1. Introduction 📌 Goal [Spring Boot] 정기 푸시 알림(Push Notification) 전송 배치(Batch) 프로세스💡 문제가 되는 부분이 많고, Batch에 대해 미숙한 이해를 기반으로 작성한 글이므로 참고로만 읽어주세요.📕 목차1. Introduction2. Domain3. Infra4. Batch5. Discussion Topics1. Introduction 📌 Usecase사용자는jaeseo0519.tistory.com이전에 Spring Boot Batch 애플리케이션을 빠르게 공부해..
[Spring Boot] Java에서 동시성 문제를 해결하는 다양한 기법과 성능 평가
·
Backend/Spring Boot & JPA
📕 목차1. Introduction2. synchronized method/block3. ReentrantLock4. CAS(Compare-And-Swap) Algorithm (feat. Atomic)5. Optimistic Lock6. Pessimistic Lock7. Distributed Lock8. Redis: Sorted Set9. Redis: Pipeline10. Messaging Queue11. Performance1. Introduction 📌 개요 [Spring Boot] 동시성 제어와 분산 락(Distributed Lock)📕 목차1. 동시성 문제2. 낙관적 락과 비관적 락3. 분산락1. 동시성 문제 📌 Single Process & Single Thread모든 요청..
[Linux] no space left on device 트러블 슈팅
·
DevOps/Linux
📕 목차1. 문제 원인 분석2. Docker overlay3. jounal log4. 결과1. 문제 원인 분석 평소처럼 was에 배포하는데 image를 받아오다가 디스크 공간이 부족해서 실패했다. 가장 단순한 방법은 EC2를 up-scaling하면 되겠지만, 방학 중엔 학교에서 지원금을 받지 못 하는 관계로 디스크 공간을 최대한 활용할 필요가 있다. df -h사용 중인 메모리를 보니..난리가 났다.만약 여기서 사용 중인 메모리는 별로 없는데 no space 에러가 뜨면, df 명령어에 i 옵션을 주고 inode 개수 한계에 도달했는지 확인해보면 된다. 여튼 나는 어디선가 메모리를 실컷 잡아먹고 있는 게 확실해졌으므로, 루트 디렉토리부터 탐색하기로 했다.sudo du -h / --max-depth=1 |..