2026 : Mac Mini loué 7×24 — matrice Memcached : réassignation de slabs, -m / -c / -I, pools et fragmentation face au SLA batch nocturne

Lecture : 8 min

Sur un Mac Mini loué en 7×24, un Memcached colocalisé casse souvent avant le SSD : slabs déséquilibrés, somme des pools au ras du -c, tailles d’objets mélangées ⇒ fragmentation RSS et P99 qui saute dans la fenêtre SLA nocturne.

Achat vs location : acheter amortit et verrouille le contrôle ; louer lisse le capex et accélère le renouvellement Apple Silicon tant que la charge de nuit reste en phase d’essai.

Guide hors disque données cache (RAM), mais avec seuils journaux (launchd, wrappers). Matrice, intervalles -m -c -I et compléments, métriques, runbook, FAQ. Liens : Redis AOF/RDB, Sidekiq + Redis, Celery, launchd / nice / I/O, syslog & logrotate.

Risques

Pas de réplication cœur, pas de données cache sur disque : sur un Mini loué, les symptômes sont latence, refus de connexion, évictions au fan-out — pas un « disque plein » côté démon.

  1. Slabs. Trafic hétérogène ⇒ classes affamées ou inutiles ; automove / réassignation utile mais peut ajouter du P99 dans la minute critique.
  2. Connexions. Oublier somme(pool_max) × processus × hôtes vs -clisten_disabled_num et reconnexions bruyantes.
  3. Fragmentation. RSS haut, marge stats trompeuse ; P99 monte à QPS plat.

Matrice de charge

Une colonne par démon ou par listener : mélanger petits drapeaux et gros rendus sous un seul -I maximal coûte plus cher que deux processus.

Profil Politique slabs Posture pools Note SLA
Cache purement éphémère Automove avec seuils prudents ; surveiller le taux d’éviction Réutilisation agressive ; accepter de courtes pertes Limiter les écrivains avant que le P99 dépasse le budget batch
Sessions ou jetons d’idempotence Tailles d’objets stables ; découper les grosses charges Pools plus petits, timeouts d’inactivité courts Traiter l’éviction comme risque de correctness, pas seulement de capacité
Fan-out / fan-in nocturne Préchauffer les classes chaudes avant la fenêtre Plafonner la concurrence par hôte pour garder la somme < 0,8 × -c Alerter sur le temps d’établissement des connexions, pas seulement sur les hits

Intervalles de paramètres -m, -c, -I et compléments

Bandes indicatives Memcached 1.6.x sur Mini partagé ; remesurer le RSS après une nuit complète. Réserver RAM pour OS, page cache, workers et observabilité.

Drapeau Rôle Intervalle indicatif (un Mini) Indice de stabilité
-m Plafond mémoire pour le stockage des items (Mo) 512–4096 Mo fréquent ; éviter > ~60–70 % de la RAM hôte si workers partagent la machine Coupler à des alertes pression mémoire côté OS ; les pics d’éviction précèdent souvent l’OOM ailleurs
-c Connexions simultanées maximales 1024–16384 ; dériver de somme(pool_max) × processus × hôtes puis ×1,2–1,4 de marge Si curr_connections > 0,85 × -c pendant cinq minutes, augmenter -c ou réduire les pools
-I Taille max d’un item (suffixes k/m) Défaut souvent 1m ; monter vers 2m–5m seulement si le profilage l’impose Un -I large élargit les pas de slabs — préférez scinder les charges hétérogènes
-t Nombre de threads de travail du démon 4–8 courant sur Apple Silicon pour un seul démon ; défaut du paquet acceptable si charge modérée Trop de threads sur un petit hôte peut augmenter la contention ; corréler au CPU et au P99
-b Limite de backlog TCP (listen) avant acceptation 1024 par défaut sur beaucoup de builds ; 2048–8192 si rafales légitimes subissent des refus avant d’atteindre -c À croiser avec listen_disabled_num et le temps de connexion côté appli
-f Facteur de croissance entre tailles de chunks dans une classe Conserver la valeur par défaut sauf histogramme très resserré et mesuré Un -f mal choisi décale toute la géométrie des slabs
-v / -vv Verbosité console / logs enveloppe Désactivé en production ; fenêtres courtes de debug uniquement Impact direct sur le volume disque des journaux, indépendant des données cache

Pools : somme des max par service × processus × hôtes + sondes + consoles ; comparer à -c. Dimensionner le pic nocturne, pas le jour seul.

Métriques de surveillance

stats / stats slabs (TCP ou UNIX) — préférer des dérivées/s pour la nuit.

  • evictions / reclaimed : non nul soutenu ⇒ -m, TTL ou split de charge.
  • listen_disabled_num : toute hausse = surcharge déjà active (priorité haute).
  • curr_connections / -c : jaune ~80 %, rouge ~90 % sur 5 min.
  • stats slabs : skew des bytes par classe ⇒ risque de réassignation.
  • P99 appli get/set des deux côtés du socket.

Seuils volume des journaux (cache hors disque données, hôte sensible aux logs)

Données cache en RAM ; launchd (StandardOutPath / StandardErrorPath), wrappers et logs clients remplissent tout de même l’APFS — rotation par taille.

  • Jaune : un fichier > 512 Mo ou > 50 Mo/h hors stress.
  • Rouge : > 2 Go sans rotation, ou > 5 Go combinés wrappers sur petit SSD — bloquer le déploiement.
  • Voir syslog / logrotate / inodes.

Runbook en cinq gestes

  1. Histogramme tailles + TTL ⇒ un ou deux démons / -I.
  2. Pic nocturne ⇒ -c = somme pools × 1,2–1,4 + sondes ; pools codés en dur côté appli.
  3. -m sous budget RAM partagé ; test d’éviction synthétique.
  4. Automove / réassignation ; regarder P99 sur 3 fenêtres.
  5. Dashboards métriques + tailles logs ; pages sur listen_disabled_num et évictions.

FAQ

-I plus large = moins d’évictions sur gros blobs ?
Souvent non : le pas des slabs s’élargit et la fragmentation augmente si de petites clés coexistent. Mieux vaut scinder ou compresser en amont.
-c vs pools ?
Somme des max × processus × hôtes + outils ; ×1,2–1,4. Sans tableur explicable = chiffre fragile.
Automove / réassignation ?
Si skew slabs + évictions corrélées ; prudence P99 sur fenêtres SLA ultra courtes.
Journaux alors que RAM-only ?
launchd, wrappers et clients verbeux remplissent l’APFS comme sur tout service.
Acheter ou louer ?
Achat = TCO long ; location = essais et renouvellement rapide tant que le SLA nuit n’est pas figé.

Guide achat

RAM pour -m + workers + page cache ; cœurs pour slabs/TLS ; SSD pour logs.

  • Deux démons possibles si split petit/gros.
  • Même chemin d’observabilité que Redis/SQL.
  • Achat public + métriques dans les sondes launchd.

Portées : -m dans le budget RAM ; -c ≥ pools × 1,2 ; -I après histogramme ; P99 sous automove ; journaux jaune/rouge comme ci-dessus ; alertes listen_disabled_num + évictions.

Résumé. Matrice ⇒ drapeaux -m -c -I (+ threads/backlog/verbosité) mesurés, journaux maîtrisés, puis forfaits ou achat avec marge nuit.

Choisissez un nœud Mac pour Memcached et les batches nocturnes

RunMini, Apple Silicon en 7×24 à côté de vos workers. Ouvrez l’accueil, comparez les forfaits, lisez le centre d’aide, puis louez avec marge RAM, pics de connexion et journaux — parcours sans compte obligatoire.

Enregistrez l’accueil et le blog avant votre prochaine revue de dimensionnement Memcached.

Louer un Mini pour Memcached 7×24