Mis à jour le 30/05/2026 · après le déploiement des correctifs 6.61–6.64.
$MIN in version_check.php vaut désormais $CURRENT (=6.66). Toute version antérieure est forcée vers la version courante.$MIN.| Audience, MAU | WS simultanés (pic) | État d’un seul VPS | Principal goulet d’étranglement |
|---|---|---|---|
| ≤ 30k | ≤ 3k | Dix fois de marge, au repos | Rien dans notre pile |
| 30k — 100k | 3k — 10k | Le palier cible, confortable | Le processeur de Workerman encaisse sans peine les pongs et les événements. La base travaille sur clés primaires. 500 Mo–1 Go de RAM pour les sockets. |
| 100k — 200k | 10k — 20k | Fonctionnement à la limite | L’unique processus Workerman surchauffe au pic. Qu’un bug de WebSockets coupés apparaisse et la dégradation commence. |
| > 200k | > 20k | On touche le plafond | La phase C devient nécessaire (Workerman count=4 plus Redis pub/sub pour un $hosts/$guests). |
| Metric | Avant les correctifs | Après la 6.64 | Où c’est fait |
|---|---|---|---|
ble_token_renew en file d’attente tant que le propriétaire est hors ligne |
1300 en 4 h | 1 (déduplication par UNIQUE INDEX) | Server — fonctionne avec n’importe quel client |
| Reprises HTTP en cas de panne réseau | 5 clés × 1/min = 7200 par jour | ~50 par jour (attente de 30 minutes) | Client 6.64 — un nouvel APK est nécessaire |
| Reconnexions WebSocket sur un réseau instable | ~10/min (reprise à 1 s) | ~1/min (attente de 60 s) | Client 6.62+ — un nouvel APK est nécessaire |
| Requêtes en base sur hello pendant l’instabilité WebSocket | ~50/s sur 10 000 clients | ~5/s | Server — la limite de 5 secondes protège de n’importe quel client |
| Événements fire échoués dans les préférences de l’invité | plus de 60 par jour par invité au jeton expiré | 0 | Client 6.63 |
| Vagues de recomposition sur guest_ok | à chaque numbers_update | uniquement en cas de changement réel | Client 6.64 |
enqueueHostMsg — même si un client 6.55 envoie 1300 renouvellements identiques, un seul entre dans la file.$GLOBALS['apk_url'] in _config.php — passer à R2 ou à un CDN tient en une ligne, sans publier l’application.Décision : relevé $MIN = '6.66'. Tout ancien client, dès son premier versionCheck reçoit une boîte de dialogue bloquante Mettez à jour l’application (l’interface existe déjà, voir App.kt:checkVersionAsync).
À l’heure actuelle count=1 — un unique processus PHP tient TOUS les WebSockets dans les tableaux $hosts/$guests/$calls in-memory.
Les seuils concrets :
Que faire à l’approche de 15 000 :
apt install redis-server).count=4 (selon le nombre de cœurs du VPS).$hosts/$guests/$calls vers un HASH Redis avec TTL.Effect: mise à l’échelle linéaire jusqu’à 4×, le plafond passant à environ 40 000–60 000 simultanées.
Aujourd’hui l’APK de 22 Mo est servi à chaque utilisateur depuis notre propre VPS. À cent mille, cela représente 2,2 To de trafic sortant par version — notre lien risque de ne pas suivre, ou de coûter cher.
Préparé en 6.64 :
$GLOBALS['apk_url'] in _config.php — une source de vérité unique pour l’adresse.download.php et version_check.php la lisent depuis là.Quand le déménagement deviendra nécessaire :
entrixy.apk.apk.entrixy.com via le CDN Cloudflare._config.php: $GLOBALS['apk_url'] = 'https://apk.entrixy.com/entrixy.apk';assembleRelease add r2 cp app-release.apk apk-bucket/entrixy.apk.À l’échelle actuelle — des dizaines d’installations de test — aucun déménagement n’est nécessaire.
sudo supervisorctl restart dialer-ws.