artillery(10)
-
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 -
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 -
7. [최적화4] 불필요한 서비스 비활성화 및 최적화 결과
불필요 비활성화 이유불필요한 서비스인 multipathd, polkitd, snapd는 기본적으로 서버에서 실행되지만, 특정 환경에서는 반드시 필요하지 않은 경우가 많음이러한 서비스들은 CPU와 메모리 자원을 소모하기 때문에 비활성화하여 서버 성능을 최적화할 수 있특히, t2.micro와 같은 리소스가 제한적인 환경에서는 작은 자원 절약도 큰 영향을 미칠 수 있서비스별 역할과 비활성화 이유multipathd (Device Mapper Multipath Daemon)역할multipathd는 스토리지 장치의 중복 경로(Multipath I/O)를 관리하는 데 사용서버가 SAN(Storage Area Network)과 같은 복잡한 스토리지 아키텍처를 사용하는 경우 필수비활성화 이유대부분의 애플리케이션 서버나 ..
2025.01.25 -
6. [최적화3] ulimit와 PAM 설정을 통한 테스트 환경 최적화
ulimit와 파일 디스크립터 (File Descriptor)란?1. 파일 디스크립터(File Descriptor)란?파일 디스크립터는 운영체제에서 프로세스가 파일, 소켓, 파이프 등과 같은 자원을 참조하기 위해 사용하는 추상적인 핸들운영체제에서 열려 있는 파일, 소켓, 파이프 등을 나타내는 참조 번호서버가 클라이언트 요청을 처리할 때, 각 연결은 파일 디스크립터를 사용하여 관리예: WebSocket 연결, 데이터베이스 연결, HTTP 요청 등은 각각 파일 디스크립터를 점유문제점: 기본 제한이 낮을 경우 연결 끊김, 오류 발생(EMFILE: Too many open files) 등이 발생가능역할연결 관리 : 클라이언트와의 각 연결은 고유한 파일 디스크립터를 사용하여 관리효율적인 자원 접근 : 운영체제는 ..
2025.01.24