EC2의 메모리가 튀어서 알림을 받고 조마조마한(?) 일이 있었는데, 해결 과정을 공유합니다 [이슈] 2023년 6월 23일, 기존 EC2에서 사용하고 있는 15GB의 메모리 중 약 14GB를 사용해서 alert이 발생한 케이스가 있었습니다. 평소 약 10GB를 사용하고 있어서 50% 정도의 여유분이 있었는데, 메모리가 몇 시간에 걸쳐서 계단식으로 증가했습니다. [최초 문제 인지] 몇 시간에 걸쳐서 계단식으로 메모리가 점프했기 때문에, 최초에는 memory leak으로 의심했습니다. [해결 과정] datadog에서 특정 메모리가 튀는 시점들을 파악했습니다(대략 오후 1시 30분, 오후 2시, 오후 2시 30분, 오후 3시, ...) 헤당 시점에 요청되었던 API들 중에서 특이한 API를 찾았습니다(re..
예를 들어서 다음과 같은 ORM이 있다고 했을 때, Model.objects.create(a=1, b=2) 실제 나가는 쿼리를 pytest에서 확인하려면, pytest 코드 안에 다음과 같은 with절 이하를 집어넣으면 확인할 수 있습니다. from django.db import connection from django.test.utils import CaptureQueriesContext with CaptureQueriesContext(connection) as ctx: loaded_cart = db_cart_loader.load(request_dto) print(ctx.captured_queries) 위와 같이 실제 쿼리 나가는 것을 확인할 수 있습니다. pytest환경이 아닌 실행 중에 확인하려면,..
상황 예전에 만들어둔 repo를 다시 사용하려고, github에서 클론 받았는데 다음과 같은 에러가 발생했습니다. File -> Project Structure에서 다음과 같이 Add SDK를 눌러서 JDK를 다운로드 해줬습니다. SDK 설정과 아래에 있는 Language Level 둘 다 맞춰주고 Modules (사이트들어가서 받을 필요 없이 바로 다운로드가 되네요) Project Settings -> Modules -> Sources, Dependencies에서도 적절한 자바 버전이 선택되었는지 체크합니다. 그리고, settings -> Build, Execution, Deployment -> Gradle -> Gradle -> Gradle JVM에서 버전에 맞는 JDK 선택 JDK를 17을 사용하도..
hibernate.hbm2ddl.auto 옵션 - create: 기존 table을 drop 후 생성 - create-drop: 프로그램 종료 시점에 drop, 프로그램 실행시에 create - update: 변경분만 반영(운영 DB에는 사용하면 안 됨) - validate: 엔티티와 테이블이 정상 매핑되었는지만 확인 - none: 사용하지 않음 - 운영장비에는 절대 create, create-drop, update 사용하면 안 된다 - 개발 초기 단계에는 create 또는 update - 테스트 서버는 update 또는 validate(다른 사람이 작업하고 있는 데이터를 날리면 안 되니까) - 스테이징과 운영 서버는 validate 또는 none 매핑 어노테이션 정리 @Column: 컬럼 매핑 - nam..
리팩토링 extract method: ctrl + alt + v (windows) inline variable: ctrl + alt + N 파라미터 변수로 뽑기: ctrl + alt + p 멤버 메소드 추출: ctrl + alt + m 복사한 변수 rename: shift + F6 테스트 테스트 만들기: ctrl + shift + T 힌트 함수에 어떤 인자 넣어야 하는지 힌트: ctrl + space bar