Wie die Optimierung des Speich... Notiz

Wie die Optimierung des Speichermanagements mit LMDB die Leistung unseres API-Dienstes verbesserte

Die API-Plattform von Pinterest, NGAPI, erfordert eine optimierte Systemleistung, um eine hohe Erfolgsrate von Anfragen sicherzustellen. Das Team implementierte eine Lightning Memory-Mapped Database (LMDB), um die Speicherverwaltung zu straffen und die Effizienz zu verbessern. Dies reduzierte den Speicherverbrauch um 4,5 %, sodass mehr Prozesse auf jedem Host laufen konnten und die CPU-Auslastung verbessert wurde. In einer Multi-Prozess-Architektur ist der Speicherverbrauch pro Prozess ein entscheidender Faktor, und die pro Prozess geladene, konfigurationsverwaltete Datenmenge ist ein bedeutender Beitrag. Das Team strebte danach, von pro-Prozess-Speicher-verwalteten Daten auf eine einzelne Kopie pro Host umzustellen, um den Speicherdruck zu reduzieren. Sie bewerteten drei mmap-basierte Lösungen und wählten LMDB, das es ermöglicht, generierte Dateien in einer Transaktion zu aktualisieren, ohne eine neue Version zu erstellen. LMDB ist eine eingebettete Schlüssel-Wert-Datenbank auf Basis von Speicher-zu-Speicher-Dateien, und das Team erstellte eine lokale Datenbank für jede konfigurationsverwaltete Datenmenge. Ein leichtgewichtiger Python-Sidecar wurde entwickelt, um die LMDB-Datenbank zu aktualisieren, und die API-Prozesse halten persistente, schreibgeschützte Verbindungen zu LMDB aufrecht. Die Ergebnisse zeigten einen Rückgang des Speicherverbrauchs um 4,5 %, sodass mehr Prozesse auf jedem Host laufen konnten und die Gesamtzahl der Hosts reduziert wurde. Diese Optimierung verbesserte die Gesamtleistung und Stabilität ohne Auswirkungen auf die Systemlatenz.
CdXz5zHNQW_ZQ6PvJQHxR.jpeg