미디엄의 Pinterest 엔지니어링 팀의 RSS 스토리

LMDB를 사용한 메모리 관리 최적화가 우리의 API 서비스에서 성능을 향상시켰다

핀터레스트의 API 플랫폼인 NGAPI는 요청의 높은 성공률을 보장하기 위해 최적화된 시스템 성능이 필요합니다. 팀은 메모리 관리를 간소화하고 효율성을 향상시키기 위해 라이트닝 메모리 맵드 데이터베이스(LMDB)를 구현했습니다. 이는 메모리 사용량을 4.5% 줄여 각 호스트에서 더 많은 프로세스를 실행하고 CPU 사용률을 개선할 수 있었습니다. 다중 프로세스 아키텍처에서 프로세스당 메모리 사용량은 중요한 요소이며, 각 프로세스당 로드되는 구성 관리 데이터는 중요한 기여 요소입니다. 팀은 메모리 압력을 줄이기 위해 프로세스당 구성 관리 데이터를 호스트당 단일 복사본으로 전환하려고 했습니다. 그들은 세 가지 mmap 기반 솔루션을 평가하고, 생성된 파일을 트랜잭션에서 업데이트할 수 있는 LMDB를 선택했습니다. LMDB는 메모리 맵 파일을 기반으로 하는 임베디드 키-값 데이터 저장소 라이브러리이며, 팀은 각 구성 관리 데이터에 대한 로컬 데이터베이스를 생성했습니다. 구성 관리 데이터를 업데이트하기 위해 가벼운 파이썬 사이드카를 개발했으며, API 프로세스는 LMDB에 지속적인 읽기 전용 연결을 유지합니다. 결과는 메모리 사용량이 4.5% 감소하여 각 호스트에서 더 많은 프로세스를 실행하고 총 호스트 수를 줄일 수 있었습니다. 이 최적화는 시스템 지연 시간에 영향을 미치지 않으면서 전반적인 성능과 안정성을 개선했습니다.
favicon
medium.com
How Optimizing Memory Management with LMDB Boosted Performance on Our API Service
기사 이미지: LMDB를 사용한 메모리 관리 최적화가 우리의 API 서비스에서 성능을 향상시켰다