PinterestのAPIプラットフォーム、NGAPIは、高いリクエスト成功率を確保するために最適化されたシステムパフォーマンスを必要とする。チームは、メモリー管理をストリームライン化し、効率を向上させるためにLightning Memory-Mapped Database(LMDB)を実装した。これにより、メモリー使用量が4.5%削減され、各ホストでより多くのプロセスを実行でき、CPUの利用率も向上した。マルチプロセスアーキテクチャーでは、プロセスごとのメモリー使用量が重要な要因であり、設定管理されたデータのロードも大きな影響を与える。チームは、各プロセスでの設定管理されたインメモリーのデータをホストごとに単一のコピーに切り替えることでメモリー圧力を低減することを目指した。3つのmmapベースのソリューションを評価し、LMDBを選択した。LMDBは、トランザクション内で生成されたファイルを更新することができるメモリー・マップド・ファイルに基づくエンベデッド・キーバリューデータ・ストレージ・ライブラリである。チームは、各設定管理されたデータ用のローカル・データベースを作成し、軽量のPythonサイドカーを開発してLMDBデータベースを更新した。APIプロセスは、LMDBに永続的な読み取り専用の接続を維持した。結果として、メモリー使用量が4.5%削減され、各ホストでより多くのプロセスを実行でき、ホストの総数も削減された。この最適化により、システムのレイテンシに影響を与えることなく、全体的なパフォーマンスと安定性が向上した。
medium.com
How Optimizing Memory Management with LMDB Boosted Performance on Our API Service
