성능테스트(4)
-
13. [최적화10] PostgreSQL에서 VACUUM이 필요한 이유 및 역할
VACUUM 설명1. VACUUM의 필요성PostgreSQL에서는 DELETE, UPDATE 후 데이터가 즉시 삭제되지 않음.이로 인해 Dead Tuples가 누적되면서 쿼리 성능이 저하됩니다.이를 해결하기 위해 정기적인 VACUUM 및 ANALYZE가 필요합니다.VACUUM의 역할Dead Tuples 정리 → 디스크 공간 절약쿼리 실행 속도 향상 → 불필요한 데이터를 읽지 않도록 최적화Autovacuum보다 적극적인 성능 최적화 가능VACUUM ANALYZE "user";인덱스 활용 최적화 → SET enable_seqscan = OFF; 설정 후 실행EXPLAIN ANALYZE SELECT * FROM "user" WHERE email = 'a@a.com';Index Scan 적용 확인2. VACUU..
2025.02.16 -
12. [최적화9] PostgreSQL 성능 최적화: pg_stat_statements와 EXPLAIN ANALYZE를 활용한 쿼리 분석 및 개선
1. 개요데이터베이스 성능 최적화는 서버 부하를 줄이고 애플리케이션 응답 속도를 높이는 핵심 요소입니다. 이번 글에서는 pg_stat_statements 확장을 활성화하여 쿼리 실행 통계를 수집하고, EXPLAIN ANALYZE를 사용해 느린 쿼리를 분석하고 최적화하는 방법을 다룹니다.수행한 쿼리 최적화 과정User 테이블의 이메일 기반 검색 최적화user_friends_user 테이블의 조인 최적화room 및 user_room 조인 최적화pg_stat_statements를 활용한 가장 실행 시간이 긴 쿼리 분석쿼리 최적화 적용 전후 성능 비교2. pg_stat_statements 확장 활성화 및 설정PostgreSQL에서 쿼리 실행 통계 수집을 위해 pg_stat_statements 확장을 활성화 필요..
2025.02.14 -
2. Artillery를 활용한 Socket.IO 기반 채팅 서비스 부하 테스트: Local vs EC2 환경 성능 비교 및 분석
Intro실시간 시스템, 특히 채팅 서비스에서 부하 테스트는 매우 중요 Socket.IO는 실시간 통신을 쉽게 구현할 수 있는 라이브러리로, WebSocket을 기반으로 동작하며 자동 폴백 메커니즘을 제공이 글에서는 Artillery를 사용해 Socket.IO 기반 채팅 서비스를 테스트하는 초기 단계 테스트 시나리오를 다룬다. 또한, 로컬 환경과 EC2 환경에서의 테스트 결과를 비교하고, 이러한 테스트가 시스템에 미치는 영향 분석채팅 서비스 개요1. 주요 기능유저 인증: 이메일과 비밀번호를 사용한 로그인친구 관리: 친구 목록 가져오기 및 친구 선택실시간 채팅: 채팅방 생성 및 메시지 전송2. 시스템 아키텍처Backend: Node.js 서버(NestJS)Database: PostgreSQL(+ TypeO..
2025.01.14 -
1. 부하테스트를 위한 테스트 도구 도입
Artillery란?성능 테스트와 부하 테스트를 위한 간단하고 강력한 도구HTTP, WebSocket, GraphQL 등 다양한 프로토콜을 지원하는 부하 테스트 도구AWS free tier 만으로 어느정도 트래픽까지 감당 가능할지 알아보기 위하여프로젝트 배경NestJS와 Socket.IO를 사용해 실시간 채팅 서비스 구축높은 동시 연결을 처리하고 안정적인 성능을 제공하기 위해 성능 테스트가 필수목표Artillery를 사용해 성능 테스트를 설정, 실행, 분석하는 과정을 공유성능 병목을 해결하고 효율적인 실시간 시스템 설계 구축부하테스트 필요성성능 검증: 웹사이트나 API가 높은 트래픽에서도 안정적으로 작동하는지 확인취약점 발견: 높은 요청으로 인해 발생할 수 있는 병목현상과 오류를 미리 확인WebSocke..
2025.01.14