2026 Аренда Mac Mini 7×24: матрица решений для LMDB и RocksDB — пакетная запись, окна компакции, checkpoint и пороги диска APFS
Встроенные KV на арендованной Mac Mini в режиме 7×24 делят один APFS-том с агентами, логами и ночными пакетами: у RocksDB пики компакции и рост WAL, у LMDB — лимит mapsize и строгая модель одного писателя. Без явной матрицы решений и порогов диска хвосты задержки всплывают раньше, чем закончится место на SSD.
Ниже — таблица выбора движка, исполняемые параметры для старта RocksDB, ночные окна для компакции и checkpoint, жёлтая и красная зона по свободному месту и типовой runbook. Связанные материалы: TimescaleDB и PostgreSQL — параллельный импорт, FAQ по водоразделам APFS, OpenClaw и LanceDB durable memory. Оформить узел можно через публичную страницу pokupka там, где доступно без обязательного входа.
Риски и контекст одного узла
На Apple Silicon с ограниченным локальным SSD конкурируют страничный кэш, mmap LMDB, фоновые компакции RocksDB и ваши очереди. Типичные сбои — не «тихий» out-of-disk, а рост stall у писателей, деградация p99 и отказы при нехватке mapsize или при забитом каталоге WAL.
- Наложение компакции и массовой загрузки. Если ночной батч пишет в LSM одновременно с агрессивной компакцией, задержки чтения и записи растут синхронно.
- Checkpoint и очистка WAL. Снимок согласованного состояния без паузы или без разнесения с компакцией даёт двойной IO-пик на одном томе.
- Копирование каталога данных. «Горячая» копия LMDB без краткой остановки записи рискует несогласованностью; для RocksDB нужен API checkpoint, а не произвольный
rsyncв пик записи.
Матрица решений (отправная точка)
Чтение тяжелее записи, минимальный операционный след и один управляемый писатель — смотрите в сторону LMDB. Высокая скорость записи, TTL, много колоночных семейств и тонкая настройка фона — RocksDB. Оба варианта требуют явного бюджета диска; ориентиры по APFS согласуйте с FAQ по водоразделам.
| Критерий | LMDB | RocksDB |
|---|---|---|
| Модель записи | Один активный писатель, B+дерево, mmap | LSM, WAL + memtable, несколько потоков согласно настройкам |
| Пакетная запись | Крупные транзакции, границы mdb_env_sync |
WriteBatch, rate limit ingest, отдельный WAL-том по возможности |
| «Сжатие» данных | Логическое обслуживание копией или офлайн-проходом | Фоновая компакция уровней, periodic_compaction_seconds |
| Checkpoint / бэкап | Короткая пауза записи + файловая копия | Встроенный checkpoint, затем уборка старых WAL |
Исполняемые настройки (стартовый набор)
Храните OPTIONS или эквивалент в репозитории и подключайте при старте процесса; версионируйте вместе с образом воркера. Значения ниже — консервативный выход на колокацию с другими сервисами на одной Mini; подтвердите на своём профиле записи и целевых SLO.
[Version]
rocksdb_version=9.x
[DBOptions]
max_background_jobs=6
bytes_per_sync=1048576
[CFOptions "default"]
write_buffer_size=67108864
max_write_buffer_number=3
min_write_buffer_number_to_merge=2
level0_file_num_compaction_trigger=4
max_bytes_for_level_base=536870912
compaction_pri=3
periodic_compaction_seconds=86400
LMDB: заранее задайте запас по mdb_env_set_mapsize (ориентир — не меньше двукратного планируемого пика данных относительно измеренной базовой линии). Синхронизацию на границах батча выполняйте через mdb_env_sync согласованно с политикой durability; при смешанной нагрузке разносите тяжёлый sync от пиков CPU соседних джоб.
Для сопоставления дисковых пиков с реляционным конвейером см. практики параллельного импорта в матрице TimescaleDB и PostgreSQL: те же принципы «окно тишины + контроль WAL» хорошо стыкуются с LSM.
Пакет: размер, пауза и обратная связь
Фиксируйте целевой размер батча относительно задержки p95 очереди, а не только от пропускной способности вставки. Для LMDB объединяйте мелкие ключи в меньшее число транзакций, но ограничивайте время удержания write-транзакции, чтобы читатели не «звонили» по таймауту. Для RocksDB используйте ограничитель байт/сек на продюсер при приближении к жёлтой зоне диска и увеличивайте окно компакции, если число файлов L0 растёт три дня подряд при неизменном коде — это признак, что ingest опережает ночную уборку.
Ночные окна компакции и checkpoint
- MSK 02:00–06:00 (или эквивалент UTC 23:00–03:00, если команда глобальная) — типичный слот для основной компакции RocksDB; держите календарь в одной таблице с другими ночными задачами.
- Checkpoint сдвиньте от пика компакции минимум на 15–30 минут; после успешного checkpoint запланируйте очистку старых WAL и проверку свободного места.
- На macOS для длинных ночных окон используйте
caffeinate -dimsuвокруг критической фазы, чтобы исключить сон диска/системы в середине компакции (согласуйте с политикой арендодателя и мониторингом).
Если узел совмещает агентов с долгой памятью векторных индексов, согласуйте расписание с рекомендациями по durable memory в статье про LanceDB, чтобы не получить три независимых пика IO подряд.
Пороги диска и мониторинг
Следите не только за процентом свободного места, но и за скоростью роста WAL и числом immutable memtable в RocksDB. Если задержка записи в стабильной нагрузке удваивается относительно базовой линии при неизменном коде — сначала проверьте компакцию и диск, а не масштабирование воркеров.
| Показатель | Жёлтая зона | Красная зона | Действие |
|---|---|---|---|
| Доля свободного APFS | Ниже ~20% | Ниже ~10% | Дроссель ingest, отложить необязательную компакцию |
| Абсолютный запас | Меньше ~5 ГиБ | Меньше ~2 ГиБ | Отложить checkpoint, подготовить выгрузку или расширение тома |
| Длительность компакции / stall | Выше 1,5× от медианы недели | Устойчиво >2× или рост immutable | Расширить ночное окно, снизить max_background_jobs, разнести соседей по диску |
Пять шагов runbook
- Разведите каталоги данных, WAL и логов по разным путям APFS там, где это возможно; зафиксируйте базовые метрики размера и задержки.
- Версионируйте OPTIONS и параметры окружения LMDB; подключайте их при деплое, а не «ручными правками» на живой машине.
- Внесите ночной слот компакции и checkpoint в общий календарь с бэкапами и тяжёлыми ETL — минимум 15 минут зазора между пиками.
- Повесьте алерты на жёлтую зону диска: автоматический дроссель продюсеров раньше, чем запись начнёт сыпаться каскадом.
- Раз в квартал — учение восстановления из checkpoint-копии на тестовый том; обновите пороги, если вырос средний размер SST или длина очереди.
Опорные якоря: write_buffer_size=64M, level0_file_num_compaction_trigger=4, диск — жёлтая около 20% свободно и <5 ГиБ абсолютно, красная около 10% и <2 ГиБ; компакцию и checkpoint не сливать в один момент.
FAQ
- Держать ли основную базу на сетевом томе
- Для 7×24 и низких хвостов — локальный быстрый SSD; сетевой том оставьте для архивов и вторичных копий.
- Как подобрать mapsize заранее
- Измерьте рост за неделю-пик, добавьте запас под переиндексацию и временные таблицы; пересмотр при каждом крупном релизе схемы данных.
- Стоит ли отключать компакцию полностью
- Почти никогда: вы лишь откладыаете пик. Лучше сузить окно и снизить параллелизм, чем копить необработанные уровни L0.
Тарифы, пакеты и оформление
Для LMDB и RocksDB на одной Mac Mini закладывайте RAM под mmap, кэш ОС и воркеры, SSD — под рост SST, WAL, checkpoint-копии и логи агентов. Если планируются длительные ночные компакции, выбирайте конфигурацию с запасом по диску и ядрам, затем оформляйте аренду.
- Сравните планы на странице тарифов (tseny) и выберите объём SSD с учётом таблицы порогей выше.
- Оформление и покупка пакета — публичная pokupka, где доступно без обязательного входа; после выдачи машины привяжите
launchdк ночным слотам из этой статьи. - Вопросы по доступу и SLA — центр помощи и тикеты из консоли.
Итог. Зафиксируйте выбор между LMDB и RocksDB таблицей, вынесите компакцию и checkpoint в разнесённые ночные окна, повесьте жёлтые и красные пороги на APFS и дроссель ingest. Готовый узел под марафон 7×24 удобнее собрать через pokupka и актуальные тарифы.
Mac Mini для LMDB и RocksDB 7×24
RunMini — Apple Silicon с локальным SSD для встроенных KV и ночных компакций. Главная, тарифы, помощь, оформление аренды без обязательного входа там, где это доступно.
Добавьте в закладки главную и блог перед долгим марафоном на одной Mini.