2026 : Mac Mini loué en 7×24 — matrice LMDB vs RocksDB : écritures massives, fenêtres de compaction, checkpoints et seuils disque sur APFS

Lecture : 9 min

« Sur un nœud Apple Silicon loué qui tourne jour et nuit, colocaliser LMDB ou RocksDB avec des workers partage le même NVMe APFS : la compaction ou la croissance copy-on-write choisit souvent l’heure de votre incident — pas votre planning. »

Vous obtenez une matrice décisionnelle, un tableau de seuils (portes jaune/rouge), des extraits de configuration prêts à coller, une fenêtre nocturne type et une checklist marathon pour un seul Mini qui héberge à la fois files d’attente et stockage embarqué. Pour le même budget disque côté SQL et WAL, voir aussi FAQ fil de flottaison APFS et matrice SQLite WAL ; pour la persistance Redis voir AOF/RDB et SSD.

Risques typiques sur hôte unique loué

Un Mini loué partage CPU, bande passante NVMe et cache page avec l’observabilité et parfois des services « bureau ». Les moteurs KV amplifient le couplage entre écrivains de premier plan et threads d’entretien qui semblent inactifs jusqu’au premier stall.

  1. Dette de compaction (RocksDB). Le niveau zéro s’empile ; la latence p99 dérape pendant que le disque reste « occupé ».
  2. Croissance de carte (LMDB). Sans mdb_env_set_mapsize anticipé, la file d’attente bloque au pire moment.
  3. Chevauchement checkpoint. CreateCheckpoint, copies mdb_env_copy ou archives tar dupliquent l’arbre pendant que les lots continuent — l’espace libre s’effondre.
  4. Sémantique sync. Couper les fsync gagne du débit au prix d’une fenêtre de perte élargie après crash.

Matrice LMDB vs RocksDB

Mesurez l’amplification d’écriture sur votre SSD loué avant de figer les réglages ; les lignes ci-dessous résument le compromis lecture/écriture et l’IO d’arrière-plan.

Dimension LMDB RocksDB
Modèle d’écriture Un writer, pages mmap copy-on-write Écrivains concurrents, WAL et memtables
Latence lecture Très prévisible carte « chaude » Dépend du block cache et de l’état compaction
IO arrière-plan Faible hors sync / copie Threads compaction peuvent saturer le disque
Ingest massif Fort si lots sérialisés + charge lecture dominante Fort si flush/levels calibrés et fenêtre nuit

Liste de seuils : disque, compaction, charge

Reliez chaque signal à une action automatisable (throttle producteurs, pause checkpoint, ticket astreinte). Les valeurs sont des ordres de grandeur pour Mini interne ; ajustez avec votre marge data + métadonnées.

Signal Jaune (ralentir) Rouge (stopper la ligne)
Espace libre APFS ≈ 20 % libre ou < ~15 Go absolus ≈ 10 % libre ou croissance incontrôlée
Octets compaction en attente (RocksDB) > 50 % du baseline stable pendant ~20 min Hausse continue + p99 ×2 sur trois scrapes
% busy disque > 70 % ~10 min avec SLO manqué > 85 % ~5 min avec backlog files
Stall écriture RocksDB > 5 s cumulés / fenêtre 15 min > 30 s deux fois en 1 h + pending ↑

Paramètres exécutables (amorçage)

Collez après mesure du débit régime établi ; gardez ~20 % de tête sur mapsize ou tailles de memtable.

LMDB — ouverture d’environnement

mdb_env_create(&env);
mdb_env_set_mapsize(env, 1ULL << 38); /* dimensionner avant gros import */
mdb_env_open(env, path, MDB_WRITEMAP | MDB_NOSUBDIR, 0644);
/* mdb_env_sync(env, 1) après chaque lot logique « checkpoint » */

Évitez MDB_NOSYNC en production ; préférez mdb_env_sync borné par lots documentés.

RocksDB — esquisse d’options

options.max_background_jobs = 2;
options.write_buffer_size = 64 << 20;
options.target_file_size_base = 256 << 20;
options.level0_file_num_compaction_trigger = 8;
write_options.sync = false; /* chemin batch ; sync ponctuel aux jalons */
/* DB::CompactRange dans la fenêtre nuit après seuil jaune OK */

Fenêtre nocturne recommandée

Ancrez sur l’heure locale du Mac loué pour aligner creux files et sommeil humain des opérateurs distants.

  • Bande calme. Exécutez CompactRange, copies LMDB (mdb_env_copy) et uploads entre 01:00 et 05:00 locale lorsque les files sont basses.
  • Décalaire. Laissez ~45 min entre fin compaction RocksDB et début copie LMDB pour laisser l’espace libre remonter.
  • Checkpoints. Jalons logiques fréquents le jour ; tarball cohérent juste après compaction nocturne si le disque est vert.

Cinq gestes pour un marathon propre

  1. Mesurer Mo/s d’écriture et dimensionner mdb_env_set_mapsize ou write_buffer_size avec marge ~20 %.
  2. Tableaux de bord : espace libre, pending compaction bytes, secondes de write stall ; throttle producteurs au jaune.
  3. Si l’API le permet : désactiver compaction auto aux heures de pointe ; réactiver avant le script nuit.
  4. Checkpoint local seulement si jaune dégagé ; sinon flux hors machine incrémental.
  5. Exercice trimestriel de restauration sur une classe SKU équivalente.

FAQ courte

LMDB supprime-t-il le besoin de checkpoints ?
Non : gardez des points de reprise logiques et des copies hors boîte.
RocksDB sur NFS depuis le même Mini ?
Évitez NFS/SMB pour le chemin chaud ; la variance de latence casse les hypothèses de compaction.
Quand paguer sur les stalls ?
Si stalls > 30 s deux fois en une heure pendant que les octets en attente montent : le SKU est souvent trop petit pour la courbe d’ingest.

Forfaits, commande et capacité

Choisissez un NVMe interne dimensionné à ~2× le pic de données utiles, du CPU de réserve pour la compaction, et assez de RAM pour block cache + mmap chauds après maintenance nocturne. Ouvrez les forfaits pour comparer les paliers, puis commandez sans compte lorsque la matrice montre une limite de capacité plutôt qu’un simple réglage.

Synthèse. Verrouillez les portes APFS, déplacez la compaction vers la nuit, cadencez les checkpoints avec la croissance WAL. Si le disque reste rouge malgré les fenêtres : montez de forfait avant de micro-optimiser.

Repères citables : jaune ~20 % ou ~15 Go libres ; rouge ~10 % ; nuit 01:00–05:00 locale ; max_background_jobs = 2 ; présizer mapsize LMDB ; pas de MDB_NOSYNC sans validation risque.

Louez un nœud RunMini pour LMDB ou RocksDB 7×24

RunMiniApple Silicon pour charges marathon et moteurs KV embarqués. Accueil, forfaits, aide SSH/VNC, commande sans friction, blog (disque, énergie, files).

Pensez à marquer l’accueil et le blog avant de redimensionner votre carte LMDB ou vos cibles de niveaux RocksDB.

Louer un Mac Mini pour LMDB / RocksDB 7×24