Test/Artillery(13)
-
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 -
11. [최적화8] PostgreSQL 최적화를 통한 WebSocket 서버 성능 향상
1. 왜 PgBouncer를 도입했는가?문제점t2.micro (1vCPU, 1GB RAM) 환경에서 PostgreSQL 직접 연결 방식은 다음과 같은 문제가 발생커넥션 오버헤드: 애플리케이션의 동시 연결 수 증가 시 PostgreSQL이 부하를 견디기 어려움메모리 부족: 커넥션 유지 시 메모리 소비 증가 → OOM(Out of Memory) 발생 가능성 증가트랜잭션 지연: WebSocket 기반의 실시간 애플리케이션에서 다수의 클라이언트 요청을 처리할 때 연결 지연 및 타임아웃 발생2. PgBouncer vs. Pgpool-II 비교PostgreSQL 성능 최적화를 위해 일반적으로 PgBouncer 또는 Pgpool-II를 선택기능 비교PgBouncerPgpool-II주요 기능단순 커넥션 풀링 (Conn..
2025.02.12 -
10. [최적화7] ZRAM 압축 알고리즘 및 설정 비교: t2.micro 환경에서 최적화 테스트
스왑(Swap) 메모리 최적화: ZRAM 활용 방법이번 포스팅에서는 ZRAM을 활용한 스왑 최적화를 다룹니다.기존 디스크 기반 스왑의 단점을 해결하고, 저사양 서버(t2.micro 등)에서 메모리 부족 문제를 개선할 수 있습니다.1. ZRAM이란?디스크 대신 RAM을 활용하여 압축된 형태로 스왑을 저장하는 기술디스크 기반 vs ZRAM 기반비교 항목디스크 기반 스왑ZRAM 기반 스왑저장 위치SSD/HDDRAM(압축 저장)속도느림 (디스크 I/O 속도에 의존)빠름 (메모리 내 압축 데이터 처리)I/O 부하높음 (디스크 쓰기/읽기 부담)낮음 (디스크 I/O 거의 없음)메모리 사용량추가적인 디스크 공간 필요RAM 일부를 사용 (압축률 높음)CPU 부하낮음CPU 사용 (압축/해제 필요)적합한 환경대용량 RAM ..
2025.02.06 -
9. [최적화6] Swap Memory 추가로 메모리 부족 문제 해결
Swap memory에 앞서 일어난 오류 해결https://s6820w.tistory.com/124개요t2.micro 인스턴스(메모리 1GB)는 메모리 사용량이 높은 웹 애플리케이션을 실행할 때 Out of Memory(OOM) 문제발생 가능이를 해결하기 위해 스왑 메모리를 추가하여 성능이 어떻게 변화하는지 테스트Swap Memory란?Swap Memory는 시스템의 RAM(메모리)이 부족할 때, 디스크의 일부를 가상 메모리로 사용하는 기술Ubuntu와 같은 리눅스 기반 운영 체제에서는 스왑 공간을 사용하여 리소스가 제한된 환경에서도 안정적인 시스템 성능을 유지할 수 있도록 도움Swap Memory의 주요 특징RAM 부족 완화RAM이 꽉 차면, 사용하지 않는 데이터를 스왑 공간으로 이동하여 메모리 확보스..
2025.02.05 -
8. [최적화5] 우분투 디스크 공간 확보 과정 정리 (Docker, PostgreSQL, Snap 등) - 8
1. 문제 발생: 504 Gateway Timeout 오류최적화 과정중 테스트시 504 Gateway Timeout 오류 발생서버가 클라이언트의 요청을 처리하는 데 너무 오래 걸려 응답하지 못하는 경우 발생하는 문제주요 원인디스크 공간 부족: 서버가 새로운 로그를 기록하거나 애플리케이션을 실행하는 데 필요한 임시 파일을 생성할 공간이 부족하면, 프로세스가 멈출 수 있음메모리 부족으로 인해 Swap 과부하: 디스크가 가득 차면 Swap 메모리를 충분히 사용할 수 없어 성능이 급격히 저하됨Docker 로그 또는 PostgreSQL 캐시 과다 사용: 로그 파일이 디스크를 가득 채우면 새로운 요청을 처리하는 데 필요한 공간이 부족해짐2. 디스크 공간 부족 확인서버에 접속하여 먼저 디스크 사용량 확인df -h출력..
2025.02.03