Обновление от 2026-05-30 · После раскатки фиксов 6.61-6.64.
$MIN в version_check.php теперь равен $CURRENT (=6.66). Любая старая версия форсится на свежую.$MIN.| Аудитория MAU | Concurrent WS (пик) | Состояние одного VPS | Главное узкое место |
|---|---|---|---|
| ≤ 30k | ≤ 3k | Запас 10×, idle | Ничто из нашего стека |
| 30k — 100k | 3k — 10k | Целевая зона, работает комфортно | Workerman CPU держит pong+events легко. БД на PK-lookup'ах. RAM 500MB-1GB на сокеты. |
| 100k — 200k | 10k — 20k | Работает с напрягом | Workerman single-process греется в час-пик. Если повылазит баг с WS-флапом — деградация. |
| > 200k | > 20k | Упрёмся | Нужна фаза C (Workerman count=4 + Redis pub/sub для shared $hosts/$guests). |
| Метрика | До фиксов | После 6.64 | Где сделано |
|---|---|---|---|
ble_token_renew в очереди при оффлайне хозяина |
1300/4ч | 1 (UNIQUE INDEX dedup) | Сервер — работает для любого клиента |
| HTTP retry при сетевом сбое | 5 keys × 1/мин = 7200/день | ~50/день (backoff 30мин) | Клиент 6.64 — нужен новый APK |
| WS-реконнект при флапе сети | ~10/мин (1с retry) | ~1/мин (60с backoff) | Клиент 6.62+ — нужен новый APK |
| DB hello-lookups при WS-флапе | ~50/сек на 10k клиентов | ~5/сек | Сервер — rate-limit 5с защищает от любых клиентов |
| Failed fire-events в Prefs гостя | 60+/день на гостя с истёкшим токеном | 0 | Клиент 6.63 |
| Recompose-волны при guest_ok | каждый numbers_update | только при реальном изменении | Клиент 6.64 |
enqueueHostMsg — даже если клиент 6.55 шлёт 1300 одинаковых renew, в очередь попадёт 1.$GLOBALS['apk_url'] в _config.php — миграция на R2/CDN меняется одной строкой, никаких релизов приложения.Решение: поднял $MIN = '6.66'. Любой старый клиент при первом versionCheck получит блокирующий диалог «Обновите приложение» (UI уже есть, см. App.kt:checkVersionAsync).
Сейчас count=1 — один PHP-процесс держит ВСЕ WS в массивах $hosts/$guests/$calls in-memory.
Конкретные пороги:
Что делать при приближении к 15k:
apt install redis-server).count=4 (по числу ядер VPS).$hosts/$guests/$calls в Redis HASH с TTL.Эффект: линейный scale до 4×, потолок поднимается до ~40-60k concurrent.
Сейчас APK 22 МБ × N юзеров идёт с твоего VPS. На 100k юзеров при релизе = 2.2 ТБ outbound. Своего канала может не хватить или будет дорого.
Подготовлено в 6.64:
$GLOBALS['apk_url'] в _config.php — один источник правды для URL.download.php и version_check.php читают оттуда.Когда понадобится переезд:
entrixy.apk.apk.entrixy.com через Cloudflare CDN._config.php: $GLOBALS['apk_url'] = 'https://apk.entrixy.com/entrixy.apk';assembleRelease добавить r2 cp app-release.apk apk-bucket/entrixy.apk.На текущем масштабе (десятки тестеров) — не надо.
sudo supervisorctl restart dialer-ws (от твоего sudo).