2026 : Mac Mini loué 7×24 — matrice Memcached : réassignation de slabs, -m / -c / -I, pools et fragmentation face au SLA batch nocturne
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.
- Slabs. Trafic hétérogène ⇒ classes affamées ou inutiles ; automove / réassignation utile mais peut ajouter du P99 dans la minute critique.
- Connexions. Oublier somme(pool_max) × processus × hôtes vs
-c⇒listen_disabled_numet reconnexions bruyantes. - Fragmentation. RSS haut, marge
statstrompeuse ; 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 desbytespar 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
- Histogramme tailles + TTL ⇒ un ou deux démons /
-I. - Pic nocturne ⇒
-c= somme pools × 1,2–1,4 + sondes ; pools codés en dur côté appli. -msous budget RAM partagé ; test d’éviction synthétique.- Automove / réassignation ; regarder P99 sur 3 fenêtres.
- Dashboards métriques + tailles logs ; pages sur
listen_disabled_numet évictions.
FAQ
-Iplus 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.
-cvs 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.