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