반응형
EC2 메모리 부족 빌드 실패 해결 (Gradle build daemon disappered unexpectedly)
트러블 슈팅2024. 8. 7. 22:45EC2 메모리 부족 빌드 실패 해결 (Gradle build daemon disappered unexpectedly)

어느날 Jenkins로 개발 서버에 어플리케이션을 배포하는데, 다음과 같은 에러 문구가 뜨면서 빌드에 실패하였습니다. Gradle build daemon disappered unexpectedly 라는 문구로 구글링을 해본 결과 EC2 메모리가 부족해서 빌드가 실패한 것이라는 이야기가 많아서 개발 서버 EC2 메모리 용량을 free -h 명령어로 확인을 해보니 사용 가능한 메모리가 300MB로 굉장히 작았습니다. 어차피 개발 서버이니 스왑 메모리를 설정을 할까.. 아니면 EC2 메모리 스펙을 늘릴까.. 고민을 하던 와중,왜 갑자기 메모리가 부족하게 되었을까? 라는 근본적인 문제의 원인이 궁금해졌습니다. 먼저 어떤 프로세스가 메모리를 잡아먹고 있는지 알기 위하여, ps -e 명령어를 통하여 모든 프로세스를..

JPA Batch Insert API 성능 개선기 (GenerationType.IDENTITY의 한계점)
트러블 슈팅2024. 5. 21. 22:01JPA Batch Insert API 성능 개선기 (GenerationType.IDENTITY의 한계점)

JPA Batch Insert API 성능 개선기 (GenerationType.IDENTITY의 한계점) 개요안녕하세요? 오늘은 성능적으로 문제가 있던 API의 처리속도를 간단한 해결방법을 통하여 96%가량 개선한 사례를 적어보려 합니다. 먼저, 문제의 API는 여러 건의 데이터를 받아 데이터베이스에 저장하는 기능을 수행하고 있었는데, 보통의 경우 100건 정도를 일괄적으로 처리하는 API였습니다.로컬에서 1회 호출해 본 결과 100건 기준으로 약 21989ms정도 걸리는 것을 확인했고, 테스트를 시도한 데이터의 건 수가 많은 것은 아니라고 생각하기에, 이는 성능적으로 문제가 있다고 생각하여 처리 속도를 개선하기로 마음을 먹었습니다. 코드를 살펴보니, 다음과 같이 Spring Data JPA의 saveA..

(Spring) MySQL 격리수준에 따른 문제 해결
트러블 슈팅2024. 3. 28. 19:15(Spring) MySQL 격리수준에 따른 문제 해결

회사에서 PG사를 통해 현금을 결제하여 포인트를 구매할 수 있는 서비스의 전반적인 백엔드 부분을 담당하여 개발을 진행하였습니다.입사 이후 진행하는 첫 신규 서비스 개발 프로젝트이기도 하고, 소중한 고객의 돈과 관련된 기능인 만큼 장애가 발생한다면 굉장히 크리티컬한 서비스 개발이였기에 설계부터 개발, 테스트까지 나름대로 신경써서 개발을 진행하였습니다. 기존 포인트 DB의 정합성이 틀어진 문제가 있어서, 데이터 정합성이 보장되도록 하기 위한 로직 개발과 DB설계부터 PG 연동 플로우 설계, 기존 API 마이그레이션, 기존 데이터 이관 업무 전부 혼자 담당하려다보니 벅차기도 하였지만 우여곡절 끝에 개발을 완료하였고 개발서버, Stage 서버 QA까지 마무리 한 뒤 대망의 결제 시스템을 오픈하였습니다. 라이브 ..

@RequestParam MultiValueMap의 내부 List 타입 불일치 문제 해결
트러블 슈팅2023. 11. 11. 15:38@RequestParam MultiValueMap의 내부 List 타입 불일치 문제 해결

@RequestParam MultiValueMap의 내부 List 타입 불일치 문제 해결 사이드 프로젝트의 주문 서비스의 주문요청 처리 기능을 개발하며 발생한 이슈 해결과정입니다. 주문 서비스의 주문요청 처리 프로세스는 다른 서비스에서 여러가지 정보들을 조회하여 검증하는 작업을 거치게 됩니다. 여태까지 해왔던 모놀리틱한 구조의 프로젝트에서는 주문 서비스에서 회원의 정보 조회도 가능하였으나, 각각의 서비스가 철저히 분리된 마이크로 서비스 아키텍처를 적용하였기에 서비스간 통신을 하기 위해서는 해당 서비스에 API 호출을 하는 방식을 이용해야 했습니다. Spring 프로젝트에서 API 호출을 하는 방법으로는 RestTemplate와 OpenFeign를 사용하는 방법이 있는데 저는 비교적 쉽게 사용할 수 있는 ..

반응형
image
loading