WEB 12

[Spring Boot] Not enough space 메모리 부족

문제 상황commit_memory(0x00007f6dc18f1000, 16384, 0) failed; error='Not enough space' (errno=12)메모리 사용량 99% 찍더니 뻗어버림문제 원인prod 서버 힙사이즈 늘린게 데브에도 배포됨dev는 ec2 micro를 사용하고 있는데 힙 사이즈가 그만큼 없었음처리자바 최대 힙사이즈를 512로 줄임 swap 메모리를 이용하는 방법도 있다지만, 나는 불필요한 메모리를 할당한 것이기 때문에 데브에서만 할당 해제를 해줌[Troubleshooting] AWS EC2 스프링 부트 빌드시 용량 부족 문제 (Not enough space) 해결

WEB/Backend 2024.06.21

[쿼리 튜닝] DB CPU가 99% - 쿼리 중 일부 컬럼만 가지고 오기

문제 상황DB CPU가 99%로 뻗음한번 뻗으면 트래픽 줄어들때까지 복구 안됨문제 원인쿼리에서 member 객체를 찾아오는게 너무 너무 부하가 큼member 객체 너무 큼 -> 객체에서 불필요한 필드 모두 삭제처리24.02.01쿼리 튜닝 : member 를 객체 그대로 찾는 것들을 모두 member Id 만 받아오도록 변경함DB 사이즈 업 : t3.xlargeAWS Performance Insight 설정 후 비효율 쿼리 탐지24.04.01DB 사이즈 스케일 다운 : t3.medium

WEB/Backend 2024.06.21

[Spring Boot] HeapDumpOnOutOfMemoryError : java heap size 에러 해결 과정

문제 상황HeapDumpOnOutOfMemoryError : java heap size이 뜨면서 cpu 사용량은 그대론데 한순간에 뻗어버림 → scaling 도 안되고 그냥 죽음.. 최악문제 원인지난 배포 이후로 생긴 오류로 추정 됨지난 배포 : 성별을 List 에 담는 로직으로 변경했었음List 에 때려 박는 로직은 heap size 오류가 생기는 듯처리2024.03.13리스트에 성별 담는 것에서 쿼리 자체에 성별 필터링 / 주선자 필터링을 넣는 것으로 변경Heap size 오류 나면 힙 덤프 찍히도록 /var/log에 찍히도록 추가함[JAVA] Heap 모니터링 & Heap Dump 분석하기2024.03.18저녁에 다시 카드 보여주는 로직에 반복문 내부에 디비 연결하는 로직 포문 밖으로 뺌2024.0..

WEB/Backend 2024.06.21

[Spring Boot] Thread starvation or clock leap detected : 문제 해결

문제 상황Thread starvation or clock leap detected이 뜨면서 cpu 상태 99%로 오르다가 뻗어버림문제 원인카드 발급 로직을 Async 로 사용하는데, 사용하며 쓰레드 풀의 커넥션이 부족하여 데드락이 걸렸던 것으로 추정https://velog.io/@mbsik6082/Spring-Data-JPA-Transaction-Propagation-EntityManager-PersistContext%EC%97%90-%EA%B4%80%ED%95%9C-%EA%B3%A0%EC%B0%B0 Spring Data JPA Transaction Propagation, EntityManager, PersistContext에 관한 고찰https://velog.io/@mbsik6082/Thread-sta..

WEB/Backend 2024.06.21

[Django] Django-waffle을 이용하여 Feature Flag 사용하기

1. Feature Flag 란 Feature Flags are software switches that turn on or off a feature - usually in real-time, without needing to release a new version of the software. For instance, if you are shipping a new feature and you want to be able to control who gets to see your new feature and who shouldn’t, then you use Feature Flags to accomplish that. Feature toggle/ Feature switch 라고도 불리는 Feature Fla..

WEB/Django 2021.10.27

[Docker] Django + Gunicorn + Ngnix + MySQL 로 도커 세팅하기

1. 들어가기 전 도커 세팅은 언제 해야하는가. .많은 개발자들이 고민하는 문제일 것이다. 내가 몇 안되지만.. 주변에 자문을 구해본 결과 !! 대다수가 맨 처음에 다 세팅해두는게 편하다고 대답했다 그래서 내가 지금 그러고 있는데 결과는 굉장히 만족!! 세팅에는 굉장히 삽질했지만 그래도 만족한다. 서버 킬때 python run server 하던걸 그냥 docker-compose up 해주면 된다! 갱장히 편리~.~ 본인 컴퓨터 : 맥 M1 칩 따라서 m1칩은 arm 베이스 이미지만 세팅이 되기때문에 몇개를 커스터마이징 해서 사용하였다. 아래 자세히 설명할 예정 2. 도커 세팅하기 2-1. 디렉토리 나누기 우선 나는 디렉토리를 나누어서 각각 도커 파일을 두었다. 프로젝트 이름이 kuku 라고 하면 Kuku..

WEB/DevOps 2021.07.17

[Swagger(Redoc) + Django] Request samples, Response samples 직접 입력하기

요즘 바빠서 블로그 글쓰는걸 까먹고 있다가 오늘 삽질을 너무 오래해서 글을 하나 쓴다. 1. 문제 상황 스웨거와 리독을 자동으로 연결 해놨는데 CBV 기반의 코드들만 request example과 response example 이 안뜨는 것을 확인했다. 정상 상황 문제 상황 보면 오른쪽 까만 화면에 에제 데이터가 떠야 되는데 안뜸을 알 수 있다. 2. 해결 방법 2-1. Response samples 만들기 - 우선 swagger_auto_schema와 openapi를 import 한다. - 예제 데이터가 담긴 response_schema_dict(예시 이름) 을 만든다 - 아래 코드의 "key" : "value" 란에 예제 데이터를 담으면 된다. from drf_yasg.utils import swag..

WEB/Django 2021.07.17

[Django View] Postman 사용하여 api 주고 받기

1. Postman 1.1 Postman 이란 더보기 A powerful GUI platform to make your API development faster & easier, from building API requests through testing, documentation and sharing. 즉, API request를 만들어서 Api를 테스트 해볼 수 있는 프로그램이다. 포스트 맨을 사용하기 위해선 노트북에 설치 해주는 게 간단한데, (굳이 설치 안하고 웹페이지에서도 할 수는 있다. ) 설치는 다음 링크에서 하면 된다. www.postman.com/downloads/ Download Postman | Try Postman for Free Try Postman for free! Join 13..

WEB/Django 2021.05.06