Actualizado el 2026-05-30 · tras desplegar las correcciones 6.61–6.64.
$MIN in version_check.php ahora es igual a $CURRENT (=6.66). Cualquier versión anterior se fuerza a la actual.$MIN.| Audiencia, MAU | WS simultáneos (pico) | Estado de un único VPS | Cuello de botella principal |
|---|---|---|---|
| ≤ 30k | ≤ 3k | Diez veces de margen, en reposo | Nada en nuestra pila |
| 30k — 100k | 3k — 10k | La franja objetivo, cómoda | La CPU de Workerman lleva sin esfuerzo los pongs y los eventos. La base de datos trabaja por clave primaria. 500 MB–1 GB de RAM para los sockets. |
| 100k — 200k | 10k — 20k | Trabajo al límite | El único proceso de Workerman se recalienta en el pico. Basta con que aparezca un fallo con WebSockets caídos para que empiece la degradación. |
| > 200k | > 20k | Chocamos con el techo | Hace falta la fase C (Workerman count=4 más Redis pub/sub para un $hosts/$guests). |
| Metric | Antes de las correcciones | Después de la 6.64 | Dónde se hizo |
|---|---|---|---|
ble_token_renew en cola mientras el propietario está desconectado |
1300 en 4 h | 1 (deduplicación por UNIQUE INDEX) | Server — funciona con cualquier cliente |
| Reintentos HTTP ante un fallo de red | 5 claves × 1/min = 7200 al día | ~50 al día (espera de 30 minutos) | Cliente 6.64 — hace falta un APK nuevo |
| Reconexiones de WebSocket con una red inestable | ~10/min (reintento a 1 s) | ~1/min (espera de 60 s) | Cliente 6.62+ — hace falta un APK nuevo |
| Consultas a la base en el hello con WebSocket inestable | ~50/s con 10 mil clientes | ~5/s | Server — el límite de 5 segundos protege frente a cualquier cliente |
| Eventos fire fallidos en las preferencias del invitado | más de 60 al día por invitado con el token caducado | 0 | Cliente 6.63 |
| Oleadas de recomposición en guest_ok | en cada numbers_update | solo ante un cambio real | Cliente 6.64 |
enqueueHostMsg — aunque un cliente 6.55 envíe 1300 renovaciones idénticas, en la cola solo entra una.$GLOBALS['apk_url'] in _config.php — mudarse a R2 o a una CDN es un cambio de una línea, sin publicar la aplicación.Decisión: se sube $MIN = '6.66'. Cualquier cliente antiguo, en su primer versionCheck recibe un diálogo bloqueante Actualiza la aplicación (la interfaz ya existe, véase App.kt:checkVersionAsync).
Ahora mismo count=1 — un único proceso PHP mantiene TODOS los WebSockets en los arreglos $hosts/$guests/$calls in-memory.
Los umbrales concretos:
Qué hacer al acercarse a las 15 mil:
apt install redis-server).count=4 (según el número de núcleos del VPS).$hosts/$guests/$calls a un HASH de Redis con TTL.Effect: escalado lineal hasta 4×, con el techo subiendo a unas 40–60 mil simultáneas.
Hoy el APK de 22 MB se sirve a cada usuario desde nuestro propio VPS. Con cien mil, eso son 2,2 TB de tráfico saliente por versión: puede que nuestro enlace no dé abasto o resulte caro.
Preparado en la 6.64:
$GLOBALS['apk_url'] in _config.php — una única fuente de verdad para la dirección.download.php y version_check.php la leen de ahí.Cuando la mudanza haga falta:
entrixy.apk.apk.entrixy.com a través de la CDN de Cloudflare._config.php: $GLOBALS['apk_url'] = 'https://apk.entrixy.com/entrixy.apk';assembleRelease add r2 cp app-release.apk apk-bucket/entrixy.apk.A la escala actual —decenas de instalaciones de prueba— no hace falta mudarse.
sudo supervisorctl restart dialer-ws.