2026 : Mac Mini loué 7×24 — Kafka : rebalance des partitions, fetch & max.poll, session.timeout et seuils disque
« Sur un Mac Mini Apple Silicon loué en 7×24, les consommateurs Kafka, les journaux broker et le cache disque partagent le même NVMe APFS : des défauts qui ignorent l’écart réel entre deux poll() ou la taille des fetch se traduisent par des tempêtes de rebalance, un lag qui dérive et des pics I/O au pire moment. »
Public : équipes qui exécutent des pipelines streaming ou des ETL avec brokers et consommateurs colocalisés. Livrable : risques, matrice de décision, table de paramètres fetch / max.poll.interval.ms / session.timeout.ms, seuils disque et FAQ, puis parcours d’achat via la page achat publique (sans compte obligatoire). Pour prolonger la lecture : matrice Sidekiq & Redis, Redis AOF/RDB, Celery, planification files & cron, FAQ ligne d’eau disque.
Scénarios de consommation longue durée
Sur un hôte unique, trois boucles se renforcent : le coordinateur du groupe révoque des partitions, les fetch génèrent des rafales I/O sur les segments, et le lag masque parfois un désérialiseur lent ou des commits bloqués.
- Friction de rebalance. Des heartbeats manqués ou un
max.poll.interval.msinférieur au travail réel entre deux poll() provoquent des révocations en chaîne. - Rafales de fetch. Un
fetch.max.bytestrop large combiné à des segments froids augmente l’iowait lorsque la compaction ou la réplication sollicitent le disque. - Lecture partielle du lag. Le lag par partition seul n’explique pas une CPU plate : il faut corréler p99 entre poll(), temps de traitement et pression broker.
Matrice de décision — minimisez les mouvements de partitions tout en protégeant CPU et SSD :
| Signal observé | Privilégier | Éviter sur Mini loué |
|---|---|---|
| Lag qui monte, CPU bas | Réduire fetch.max.wait.ms ; ajuster fetch.min.bytes ; vérifier réseau et disque broker |
Augmenter aveuglément max.poll.records |
| Boucles de rebalance | Caler max.poll.interval.ms sur la durée mesurée ; assigneur coopératif ; group.instance.id pour rôles stables |
Scaler les consommateurs aux heures de pic sans marge réseau |
| Pression disque | Aligner retention.bytes et taille de segment sur l’espace libre ; surveiller log.dirs |
Fetch massifs par partition pendant compaction lourde |
Six gestes opérationnels
- Mesurer la p99 entre deux poll() ; fixer
max.poll.interval.msavec 20–30 % de marge au-dessus du pire cas observé. - Régler
heartbeat.interval.msvers un tiers desession.timeout.mset respecter les bornes broker. - Plafonner
max.partition.fetch.bytesetfetch.max.bytes; baissermax.poll.recordssi le CPU sature. - Activer rebalance coopératif et adhérence statique ; décaler compaction et sauvegardes selon la matrice planification.
- Alerter sur lag, churn de rebalance et iowait ; throttler les producteurs si le disque passe au jaune.
- Valider en préproduction un arrêt brutal d’un consommateur pendant un lot pour vérifier l’idempotence et les commits.
Table des paramètres fetch, max.poll.interval.ms, session.timeout.ms et apparentés
Noms de style client Java ; transposez vers votre SDK. Ajustez après mesure sur les cœurs Apple Silicon du Mini loué.
| Paramètre | Point de départ opérable | Note de stabilité |
|---|---|---|
fetch.min.bytes |
1 à 8 Ko pour viser la latence | Couplé à fetch.max.wait.ms |
fetch.max.wait.ms |
≈ 500 ms par défaut ; raccourcir si la queue attend déjà des données | Attentes plus courtes réduisent les rafales disque |
max.partition.fetch.bytes |
1–4 Mo sauf messages très volumineux | Limite les pics RAM par partition |
fetch.max.bytes |
Plafond global par requête fetch | Cohérent avec message.max.bytes côté broker |
max.poll.records |
500 par défaut ; baisser si désérialisation lourde | Le travail doit tenir dans max.poll.interval.ms |
max.poll.interval.ms |
1,5–2× le pire écart mesuré entre poll() | Trop bas ⇒ churn ; trop haut ⇒ threads bloqués silencieux |
session.timeout.ms |
10–45 s selon politique broker | Détecte plus vite les membres défaillants si court |
heartbeat.interval.ms |
≈ un tiers de session.timeout.ms |
Garde le coordinateur dans une plage saine |
Seuils disque, segments broker et journaux applicatifs
Les répertoires log.dirs, l’état consommateur et les logs tournés partagent souvent le même volume APFS. Suivez l’espace libre, les inodes et la vélocité des segments.
| Indicateur | Seuil « jaune » | Seuil « rouge » | Action |
|---|---|---|---|
| Espace libre APFS (données) | ≈ 20 % | ≈ 10 % ou croissance anormale | Resserre la rétention, purge les logs, décale compaction |
| Marge avant compaction lourde | < 2 Go réservés libres | Risque d’échec d’écriture segment | Élargir le volume ou externaliser un broker |
| Logs applicatifs locaux | Fichier > 200 Mo sans rotation | Inodes > 80 % | Voir seuils logrotate & inode |
Repères citables : heartbeat ≈ un tiers de session.timeout ; max.poll.interval au-dessus du pire écart poll ; jaune ~20 % / rouge ~10 % d’espace libre — détail dans la FAQ ligne d’eau.
FAQ — tempête de rebalance et lecture du lag
- À quoi ressemble une tempête de rebalance ?
- Des événements Revoke / Assign répétés sans phase de consommation stable : réalignez
max.poll.interval.ms, réduisez les changements d’adhérence du groupe et favorisez un assigneur coopératif pour limiter les mouvements de partitions. - Le lag augmente alors que le CPU reste modéré : par où commencer ?
- Contrôlez
fetch.max.wait.ms,fetch.min.byteset la santé disque du broker ; un disque engorgé retarde la livraison même sans surcharge CPU. Pour plus de cœurs ou de NVMe, passez par achat.html puis validez SSH avec le centre d’aide.
Synthèse. Une matrice Kafka durable sur Mini loué aligne fetch, max.poll et heartbeats, puis verrouille rétention et journaux sous des seuils disque explicites. Pour commander : Accueil, forfaits, aide, achat public sans compte — louez un nœud et validez votre charge streaming en conditions réelles.
Choisissez un nœud Mac pour consommateurs Kafka 7×24
Mini Apple Silicon pour brokers, streaming et log.dirs sur NVMe. Accueil, forfaits, aide, achat sans compte, blog.
Mac Mini loué pour Kafka et consommateurs 7×24 : achat, aide, blog.