Atualizado a 2026-05-30 · após a implantação das correções 6.61–6.64.
$MIN in version_check.php é agora igual a $CURRENT (=6.66). Qualquer versão anterior é forçada para a atual.$MIN.| Audiência, MAU | WS simultâneos (pico) | Estado de um único VPS | Principal estrangulamento |
|---|---|---|---|
| ≤ 30k | ≤ 3k | Dez vezes de margem, em repouso | Nada na nossa pilha |
| 30k — 100k | 3k — 10k | A faixa alvo, confortável | O processador do Workerman aguenta pongs e eventos sem esforço. A base trabalha por chave primária. 500 MB–1 GB de RAM para os sockets. |
| 100k — 200k | 10k — 20k | Trabalho no limite | O único processo do Workerman sobreaquece no pico. Basta surgir um erro com WebSockets caídos para começar a degradação. |
| > 200k | > 20k | Batemos no teto | É preciso a fase C (Workerman count=4 mais Redis pub/sub para um $hosts/$guests). |
| Metric | Antes das correções | Depois da 6.64 | Onde foi feito |
|---|---|---|---|
ble_token_renew em fila enquanto o proprietário está offline |
1300 em 4 h | 1 (deduplicação por UNIQUE INDEX) | Server — funciona com qualquer cliente |
| Repetições HTTP numa falha de rede | 5 chaves × 1/min = 7200 por dia | ~50 por dia (recuo de 30 minutos) | Cliente 6.64 — é preciso um APK novo |
| Reconexões de WebSocket numa rede instável | ~10/min (repetição a 1 s) | ~1/min (recuo de 60 s) | Cliente 6.62+ — é preciso um APK novo |
| Consultas à base no hello com WebSocket instável | ~50/s em 10 mil clientes | ~5/s | Server — o limite de 5 segundos protege de qualquer cliente |
| Eventos fire falhados nas preferências do convidado | mais de 60 por dia por convidado com token expirado | 0 | Cliente 6.63 |
| Ondas de recomposição em guest_ok | em cada numbers_update | apenas numa alteração real | Cliente 6.64 |
enqueueHostMsg — mesmo que um cliente 6.55 envie 1300 renovações idênticas, só uma entra na fila.$GLOBALS['apk_url'] in _config.php — mudar para R2 ou para uma CDN é uma linha, sem lançar a aplicação.Decisão: subido $MIN = '6.66'. Qualquer cliente antigo, no seu primeiro versionCheck recebe um diálogo bloqueante Atualize a aplicação (a interface já existe, ver App.kt:checkVersionAsync).
Neste momento count=1 — um único processo PHP mantém TODOS os WebSockets nos vetores $hosts/$guests/$calls in-memory.
Os limiares concretos:
O que fazer à medida que se aproximam 15 mil:
apt install redis-server).count=4 (conforme o número de núcleos do VPS).$hosts/$guests/$calls para um HASH do Redis com TTL.Effect: escalonamento linear até 4×, subindo o teto para cerca de 40–60 mil em simultâneo.
Hoje o APK de 22 MB é servido a cada utilizador a partir do nosso próprio VPS. Com cem mil, isso são 2,2 TB de tráfego de saída por versão — a nossa ligação pode não aguentar ou sair cara.
Preparado na 6.64:
$GLOBALS['apk_url'] in _config.php — uma única fonte de verdade para o endereço.download.php e version_check.php leem-no de lá.Quando a mudança for precisa:
entrixy.apk.apk.entrixy.com através da CDN da Cloudflare._config.php: $GLOBALS['apk_url'] = 'https://apk.entrixy.com/entrixy.apk';assembleRelease add r2 cp app-release.apk apk-bucket/entrixy.apk.Na escala atual — dezenas de instalações de teste — não é preciso mudar.
sudo supervisorctl restart dialer-ws.