Performances 21 avril 2026

2026 — SSH à RTT élevé depuis macOS : IPQoS, compression et chiffres avant d’accuser votre Mac mini cloud

Équipe Ingénierie ProxyMac 21 avril 2026 ~12 min de lecture

Les développeurs qui louent une Mac mini ProxyMac à Hong Kong, au Japon, en Corée, à Singapour ou aux États-Unis voient souvent une RTT de 120 à 220 ms depuis un portable en Europe ou sur la côte ouest américaine—et concluent tout de suite que le CPU cloud est défectueux. Dans les incidents de production que nous trions, plus de la moitié des tickets « SSH lent » se résolvent entièrement côté client OpenSSH macOS en ajustant les marques IPQoS, en basculant la compression, en figeant des chiffres AEAD et en resserrant les sondes ServerAlive avant tout reprovisionnement matériel. Ce guide propose une liste de symptômes, une base trois chiffres à coller dans les post-mortems, une matrice de réglages en quatre lignes compatible avec le travail MTU et le choix de région, une recette ~/.ssh/config en sept étapes, et des règles d’arrêt explicites pour ne pas passer un week-end à micro-optimiser les suites de chiffres alors qu’un trou noir PMTU est le vrai coupable.

Vous saurez aussi quand escalader vers le choix de nœud inter-régions plutôt que vers des réglages locaux, et quand combiner ce texte avec les recettes SSH du centre d’aide tout en comparant les SKU régionaux pour votre prochain pilote.

Qui souffre — et ce que signifie vraiment « lent »

Une RTT élevée ne change pas la vitesse de la lumière ; elle change le nombre d’aller-retours fenêtrés avant qu’un humain voie du retour. Les shells interactifs pâtissent au-delà de 150 ms de RTT parce que chaque rafraîchissement de l’éditeur de ligne attend un acquittement sauf si le client pipeline agressivement. Un scp d’archives Xcode multi-gigaoctets souffre quand le TCP monoflux ne remplit pas le tuyau—souvent un problème de pile client, pas du SSD de la mini. Le Partage d’écran amplifie tout, mais cet article reste centré sur OpenSSH 9.x sous macOS 15 parlant au sshd d’usine de la mini louée.

  • Délai à la frappe avec un ping instantané : signe typique d’attente sur l’ordonnancement des canaux SSH, pas sur l’ICMP—IPQoS et charge CPU des chiffres comptent.
  • Le débit s’effondre après le premier mégaoctet : souvent la compression qui lutte contre des charges utiles déjà compressées, ou du bufferbloat sur le saut Wi‑Fi domestique—pas le centre de données.
  • Déconnexions à minuit sur les onglets au repos : les box résidentielles recyclent les tables NAT toutes les 20 à 45 minutes ; sans keepalive le serveur pense encore que vous êtes attaché pendant que l’interface client est figée.

Trois chiffres que chaque fiche d’incident doit capturer

Avant de modifier les configs, collez-les dans Slack pour que la finance relie les pics à la géographie plutôt qu’aux impressions.

MétriqueComment la capturerOrdre de grandeur sain vers un nœud ProxyMac proche
RTT ICMP p95ping -c 50 hôte et lire la queue8–35 ms intra-APAC, 140–190 ms UE→US (attendu, pas un défaut)
Bon débit SCP monofluxscp -v gros.bin hôte:~/Doit dépasser 35 % du débit descendant annoncé du FAI sur Wi‑Fi peu congestionné ; en dessous, suspectez l’airtime Wi‑Fi ou le MTU
Durée de poignée SSHtime ssh -G hôte | head -1 plus l’horloge murale du premier promptPremier shell en <2,5× RTT une fois la clé d’hôte en cache ; au-delà, suspectez DNS ou surcharge KEX
Si SCP « se fige » alors que le ping reste joli : arrêtez-vous ici et lisez MTU et PMTUD pour les blocages SSH—aucun bricolage de Ciphers ne répare une fragmentation en trou noir.

Matrice de réglages : IPQoS, compression, chiffres, keepalives

Chaque ligne est sûre à tester seule ; combinez au plus deux changements par passe de test pour pouvoir attribuer les gains.

ParamètreIdéal quandCompromisValeur de départ
IPQoSGros scp, rsync, paquets gitLes shells interactifs peuvent paraître un peu moins « vifs » qu’avec lowdelayIPQoS=throughput pour les sessions de synchro fichiers
IPQoSvim/emacs sur SSH, rafraîchissements tmuxPeut rogner de quelques pourcents le débit de pointe des transfertsIPQoS=lowdelay sur les hôtes dédiés interactifs
CompressionRTT >120 ms et charges texte/journauxCPU aux deux bouts ; nuisible sur la vidéo ou les artefacts pré-zippésCompression yes pour les flux de logs CI ; no pour les transferts .ipa
Ciphers / MACsTout chemin Apple Silicon ↔ Apple SiliconDes listes héritées mal configurées cassent l’interopPréférer chacha20-poly1305@openssh.com avec repli aes256-gcm@openssh.com

Recette client macOS en sept étapes

  1. Créez un bloc Host nommé d’après la région de la mini, p.ex. Host proxymac-jp, pour que les essais ne débordent pas vers vos hôtes Git personnels.
  2. Fixez KEX et chiffres explicitement—OpenSSH négocie des défauts sûrs, mais le figeage retire une variable en incident : ajoutez KexAlgorithms curve25519-sha256 et la paire AEAD choisie ci-dessus.
  3. Réglez IPQoS throughput pour les sauvegardes nocturnes ; dupliquez le bloc avec IPQoS lowdelay pour les shells interactifs si vous vivez dans vim.
  4. Basculez la compression par bloc Host ; n’activez jamais un Compression yes global sauf si vous aimez expliquer un débit négatif à la direction.
  5. Ajoutez des keepalives : ServerAliveInterval 30 et ServerAliveCountMax 4 suivent la même ligne directrice que dans le multiplexage ControlMaster—la RTT élevée amplifie la perte au repos.
  6. Mesurez à nouveau : recapturez le tableau trois chiffres après chaque changement ; si la RTT n’a gagné que <3 % mais que le CPU a doublé, revenez en arrière.
  7. Documentez le bloc gagnant à côté du nom d’hôte sur votre wiki interne et reliez l’article du centre d’aide que vos stagiaires liront vraiment.

Exemple concret de bloc (dupliquez avec IPQoS lowdelay pour les hôtes interactifs si vous séparez les profils) :

Host proxymac-jp HostName mini.exemple.jp User votreuser IPQoS throughput Compression yes Ciphers chacha20-poly1305@openssh.com ServerAliveInterval 30 ServerAliveCountMax 4

Une fois que c’est versionné dans git, demandez à l’équipe un A/B à l’aveugle de dix minutes chacun : la moitié garde les défauts hérités, l’autre moitié le bloc—agréguez la latence perçue sur une échelle Likert 1–5 et joignez la feuille au ticket infra pour que la finance voie qualitatif et quantitatif.

Quand arrêter de bricoler le portable

Si la RTT ICMP vers la région choisie dépasse deux fois celle vers une autre ville ProxyMac qui respecte encore vos contraintes de résidence des données, cessez d’éditer ssh_config et changez de géographie—le guide d’optimisation de latence liste déjà les attentes APAC contre US. De même, si la contention d’airtime Wi‑Fi explose chaque soir quand le foyer streame, aucune marque DSCP sur SSH ne battra l’Ethernet pour un envoi de 45 minutes. Enfin, si traceroute montre une perte récurrente au même AS intermédiaire sur trois jours, ouvrez un ticket chemin avec des sorties MTR du playbook MTR plutôt que de poursuivre les suites de chiffres.

Note sécurité : un ForwardAgent yes agressif avec des maîtres multiplex longue durée transforme un portable volé en mouvement latéral instantané—associez le tuning perf à des clés courte durée documentées dans votre baseline SOC.

FAQ

Le ssh d’Apple diffère-t-il de celui de Homebrew ? Pour les marques QoS et le sandboxing, oui—testez avec le binaire que vos scripts invoquent réellement ; les conteneurs CI utilisent souvent d’autres chemins que votre profil Terminal interactif.

Dois-je activer ControlMaster sur des liaisons satellite ? Souvent oui—voir l’article dédié—mais rappelez-vous qu’un maître bloqué bloque toutes les sessions esclaves jusqu’au diagnostic.

Des réglages serveur spécifiques ProxyMac ? Les clients ont rarement root sur les images partagées ; traitez sshd comme en lecture seule et concentrez-vous sur le client, le chemin et la région.

Pourquoi une Mac mini Apple Silicon compte encore une fois le client réglé

Après alignement de IPQoS, compression et keepalives, la marge restante vient du matériel qui ne hoquète pas quand dix sessions sftp parallèles arrivent : le M4 sur les nœuds ProxyMac garde les extrémités SSH HK / JP / KR / SG / US réactives pendant les tempêtes CI, exécute nativement les toolchains macOS dont vos jobs ont besoin, et s’aligne sur les mêmes économiques de location que vous utilisez déjà pour les paires VNC. Documentez le bloc Host gagnant à côté du SKU régional, reliez ce guide à votre checklist d’onboarding, et recyclez la mini quand la charge est terminée—le tuning est moins cher quand l’extrémité distante est du bare métal prévisible plutôt qu’une VM surchargée qui se fait passer pour un Mac.

Placez des clients réglés près de la bonne région

Mac mini HK / JP / KR / SG / US avec SSH prêt à la livraison