본문 바로가기

OSS on Azure/Database

Azure Database for PostgreSQL 성능 개선 팁 - 커넥션 풀링 사용하기

*글 최초 발행일자: 2019.02.11*

 

오픈 소스를 Azure에서 잘 활용하는 것, 참으로 중요한 일이죠. 관련해 Azure Database for PostgreSQL 성능 개선 팁을 하나 소개합니다.

서버 자원 측면에서 볼 때 PostgreSQL의 커넥션 맺기는 비용이 많이 드는 작업입니다. 새로운 커넥션 연결을 위해 메모리 할당이 필요하기 때문인데요, 이런 이유로 트랜잭션 처리가 잦은 애플리케이션의 경우 연결 지연(latency)과 데이터베이스 쓰루풋 성능 저하 문제를 겪을 수 있습니다. 이는 곧 사용자가 느끼는 애플리케이션 체감 성능이 낮아지는 결과로 이어지죠.

사용자 경험에 영향을 주지 않기 위해 트랜잭션 처리가 많은 애플리케이션을 사용할 때 커넥션 풀링(Connection Pooling)을 사용하는 것을 권장합니다. 커넥션 풀링을 사용하면 애플리케이션과 데이터베이스 간에 새로운 커넥션을 자주 맺어도 일정 수준으로 성능을 유지할 수 있습니다.

커넥션 풀링은 애플리케이션 측면에서 적용하는 것을 주로 고려합니다. 수정 또는 설정이 어려우면 애플리케이션과 데이터베이스 사이에 프록시를 두는 방법을 써도 됩니다. 관련해 오픈 소스 커뮤니티에서 PgBouncer, Pgpool 같은 훌륭한 프록시를 개발했죠. 이를 사용하면 Azure Database for PostgreSQL 성능 향상을 위한 커넥션 풀링 프록시를 간편하게 운영할 수 있습니다.

이중 PgBouncer를 예로 커넥션 풀링을 통한 성능 개선 예를 소개하겠습니다. PgBouncer를 쓰는 것과 쓰지 않는 것의 차이는 다음과 같이 그림으로 표현할 수 있습니다. 그림만 봐도 데이터베이스 측면에서 볼 때 커넥션 수가 줄어드니 당연히 연결 지연이나 쓰루풋 저하가 없다는 것을 알 수 있죠.

애저 환경에서 이를 적용하려면 애플리케이션을 운영하는 가상 머신에 PgBouncer를 설치한 다음 설정하면 됩니다.

컨테이너 환경에서도 구성이 간단합니다. AKS(Azure Kubernetes Service) 상에서 애플리케이션을 운영한다면 마이크로소프트가 제공하는 컨터이너 레지스트리에서 PgBouncer 사이드카 프록시 이미지를 받아쓰면 됩니다. 관련 설정은 참조 문서를 보면 됩니다.

 

안쓸 이유가 없네...

레이턴시는 40% 줄고, 쓰루풋은 4배 늘고

 

그렇다면 PgBouncer를 쓸 때와 그렇지 않을 때 연결 지연와 데이터베이스 쓰루풋 차이는 얼마나 날까? 다음 표 하나로 모든 설명이 끝납니다. 커넥션 지연은 40% 줄고, 쓰루풋은 4배 더 늘어나는 효과가 나옵니다. 안 쓸 이유가 없네요.

Azure Database for PostgreSQL 성능 최적화를 더 자세히 알고 싶다면 오픈 소스 전문 기업 락플레이스로 문의 부탁합니다.

락플레이스 바로가기 https://rockplace.co.kr/

제품 및 서비스에 대해 견적을 원하시는 경우 입력하신 연락처 또는 이메일로 빠르게 답변을 드리겠습니다. https://rockplace.co.kr/customer_center/estimate_inquiry/

 

락플레이스 :: 오픈소스 전문기업 » 견적문의

 

rockplace.co.kr

*이 외에도 락플레이스의(2021~) 최신 뉴스레터 소식을 받아보고 싶으시다면? *

락플레이스 뉴스레터 구독하기 click