Платформа API Pinterest, NGAPI, требует оптимизированной производительности системы для обеспечения высокой скорости успеха запросов. Команда реализовала базу данных Lightning Memory-Mapped Database (LMDB) для оптимизации управления памятью и повышения эффективности. Это снизило использование памяти на 4,5%, позволяя запускать больше процессов на каждом хосте и улучшать использование процессора. В архитектуре с несколькими процессами использование памяти на каждый процесс является важным фактором, а конфигурационно-управляемые данные, загружаемые для каждого процесса, являются значительным вкладчиком. Команда стремилась переключиться с конфигурационно-управляемых данных в памяти для каждого процесса на одну копию на хост для снижения давления на память. Они оценили три решения на основе mmap и выбрали LMDB, которое позволяет обновлять сгенерированные файлы в транзакции без создания новой версии. LMDB - это встроенная библиотека хранения ключ-значение на основе файлов, отображаемых в память, и команда создала локальную базу данных для каждого конфигурационно-управляемого набора данных. Была разработана легковесная Python-сторонняя программа для обновления базы данных LMDB, а процессы API поддерживают постоянные только-чтение соединения с LMDB. Результаты показали снижение использования памяти на 4,5%, позволяя запускать больше процессов на каждом хосте и уменьшать общее количество хостов. Эта оптимизация улучшила общую производительность и стабильность без влияния на задержку системы.
medium.com
How Optimizing Memory Management with LMDB Boosted Performance on Our API Service
