분류 전체보기12 [AWS RDS] pt-query-digest를 활용한 slow query 분석 📌 문제 상황RDS에서 slow_query_log를 켜둔 상태였는데, 로그가 수만 건 이상 쌓여 관리가 어려워짐로그를 직접 보면 조건값이 조금씩 달라서 전부 다른 쿼리처럼 보임실제로는 같은 쿼리 패턴인데 단순 값 차이 때문에 중복 로그처럼 쌓이고 있었음즉, 비슷한 쿼리를 묶어서 패턴화하지 않으면 개선 포인트를 찾기 어려운 상황 📌 해결 방법저는 크게 두 가지 단계를 거쳐 문제를 해결했습니다.로그 파일 다운로드AWS Console에서 RDS 인스턴스를 선택하고 '로그 및 이벤트' 탭으로 이동slowquery/mysql-slowquery.log 파일을 다운로드로그 분석Percona Toolkit의 pt-query-digest를 이용해 쿼리를 패턴화 & 집계상위 몇 개의 문제 쿼리만 집중적으로 튜닝 📌 .. 2025. 9. 1. Spring Boot에서 Caffeine Cache 적용과 캐시 관리 API 구현하기 📌 문제 상황우리 서비스에서는 메인 배너, 서브 배너, 카테고리 등과 같이 자주 변하지 않는 데이터를 계속해서 조회하는 문제가 있었습니다.예를 들어, 메인 페이지에 들어올 때마다 DB에서 배너 정보를 매번 조회한다면,불필요하게 DB 부하가 커지고,트래픽이 많을 경우 성능 저하로 이어질 수 있습니다.특히 배너나 카테고리처럼 한 번 가져오면 크게 변하지 않는 데이터를 매번 불러오는 건 낭비에 가까웠습니다. 📌 해결 방법: 스프링부트 캐시 도입이 문제를 해결하기 위해 선택한 방법은 Spring Boot의 캐시(Cache) 기능이었습니다.스프링 캐시는 단순히 @Cacheable, @CacheEvict 등의 어노테이션만으로 손쉽게 적용할 수 있습니다.@Cacheable → 캐시에 값이 없을 경우 메서드를 실행.. 2025. 8. 27. Firebase Functions onWrite와 Too Many Connections 오류 Firebase를 이용한 서비스에서 데이터베이스를 MySQL로 마이그레이션하는 과정은 효율적인 데이터 동기화가 핵심입니다. 특히 Firebase Functions의 onWrite 트리거를 사용하여 Firestore 데이터를 MySQL로 실시간 동기화할 때, 대규모 데이터 업데이트는 예상치 못한 Too Many Connections 오류를 유발할 수 있었습니다. 본 글에서는 마이그레이션 과정에서 겪었던 이러한 문제 상황과 그 해결 과정을 공유합니다.문제 상황: 베스트 리뷰 선정과 대규모 onWrite 트리거저희 서비스에는 특정 리뷰를 '베스트 리뷰'로 설정하는 기능이 있습니다. 이 기능은 다음과 같은 로직으로 작동하도록 설계되었습니다.특정 리뷰를 베스트 리뷰로 설정하게되면 해당 리뷰의 today_index.. 2025. 7. 28. AWS EC2 인스턴스 용량 확장 및 추가 Swap Memory 설정 제가 운영 중인 AWS EC2 인스턴스는 메모리와 디스크 상황이 다음과 같습니다.df -h/dev/root 30G 25G 4.8G 84% /free -h total used free shared buff/cache availableMem: 3.8Gi 3.0Gi 127Mi 9.0Mi 705Mi 557MiSwap: 2.0Gi 2.0Gi 40Mi 디스크 사용량: 30GB 중 25GB 사용 (84%) → 여유가 크진 않음메모리: 3.8GiB 중 3.0GiB 사용, swap 2GiB 거의 다 사용 중사용 가능한 메모리: 557.. 2025. 7. 22. JMeter를 이용한 Spring Boot API 부하 테스트 1️⃣ JMeter 설치JMeter 최신 버전 다운로드https://jmeter.apache.org/download_jmeter.cgi Apache JMeter - Download Apache JMeterDownload Apache JMeter We recommend you use a mirror to download our release builds, but you must verify the integrity of the downloaded files using signatures downloaded from our main distribution directories. Recent releases (48 hours) may not yet be avajmeter.apache.org 압축 해제 후 bi.. 2025. 5. 13. GitHub Actions를 이용한 Vue 프로젝트 Firebase Hosting 자동 배포 🚀 GitHub Actions를 이용한 Vue 프로젝트 Firebase Hosting 자동 배포개요이 글에서는 GitHub Actions를 활용하여 main 브랜치에 코드를 push하면 자동으로 Vue 프로젝트가 Firebase Hosting에 배포되도록 구성하는 방법을 설명합니다. CI/CD를 통해 반복적인 배포 작업을 자동화하고, 안정적인 배포 흐름을 구축할 수 있습니다.📄 workflow/firebase-hosting.yamlname: Deploy to Firebase Hostingon: push: branches: - mainjobs: build-and-deploy: runs-on: ubuntu-latest steps: - name: Checkout sourc.. 2025. 5. 2. 이전 1 2 다음 반응형