Трафик, квоты и лимиты
Эта страница прослеживает трафик пользователя от узла, который его передал, до чисел на странице пользователей и объясняет, где действует каждое ограничение учётной записи. Как задавать ограничения, описано в Пользователи и Тарифы.
Сбор трафика
Узлы считают байты по каждому инбаунду, аутбаунду и пользователю, в памяти. Каждые 30 секунд панель собирает счётчики всех узлов:
- Узел обнуляет каждый счётчик, когда сообщает его, поэтому каждый байт сообщается ровно один раз.
- Панель записывает весь сбор одной транзакцией базы данных. Если запись не удалась, сбор остаётся в памяти и добавляется к следующему, так что из-за занятой базы ничего не теряется.
- Узел, отрезанный от панели, продолжает считать, пока не перестанет обслуживать. То, что он передал после последнего сбора панели, теряется, если он остановится раньше, чем панель снова до него дойдёт; см. Узел и его панель.
Две записи из одного сбора
Каждый сбор записывается сразу в два места:
| Запись | Для чего она | Хранится |
|---|---|---|
| Учётная книга: по узлу, по пользователю и по паре узел–пользователь, плюс итоги каждой учётной записи | квоты, лимиты реселлеров, отчёты | всегда |
| Ряды для графиков: сырые байты по временным интервалам | графики трафика | в течение срока хранения статистики, по умолчанию 30 дней; 0 отключает запись |
Отчёты читают учётную книгу, поэтому отключение графиков никогда не меняет того, сколько списано с учётной записи и что показывает отчёт. График узла и его общий итог берутся из одних и тех же замеров, поэтому расходиться не могут.
Множитель узла
Множитель трафика узла масштабирует то, что списывается с его пользователей. При множителе 2 гигабайт через этот узел снимает два гигабайта с квоты пользователя и с лимита его реселлера. Собственные показатели узла и его периодический лимит остаются в сырых байтах.
Туннели и эндпоинты
- Трафик через туннель списывается на ретрансляторе, к которому подключаются пользователи. На исходном узле он повторно не списывается.
- Эндпоинт WireGuard или OpenVPN считает то, что отправляют пиры, и то, что он пересылает под именем эндпоинта, а панель складывает одно с другим.
Онлайн
Учётная запись считается онлайн, пока у неё был трафик за последние 90 секунд. Онлайн-счётчик каждого узла — это число учётных записей с трафиком через этот узел за то же окно. Если ряды для графиков отключены, счётчик по узлам неизвестен и показывается прочерком, а не нулём.
Квоты и сроки
Каждую минуту панель проверяет каждую учётную запись на квоту трафика, дату окончания, а для клиента реселлера — ещё и на лимит и срок самого реселлера.
- Учётная запись, вышедшая за предел, отключается на каждом узле, где она есть, на лету, без перезапуска чего-либо, и панель создаёт событие с причиной.
- Учётная запись, вернувшаяся в свои пределы (продлена, получила больше трафика, сброшена), снова включается той же проверкой.
- Учётная запись, отключённая человеком, остаётся отключённой. Ежеминутная проверка никогда не включает учётную запись, которую вы или массовое действие отключили вручную, даже если она в своих пределах.
Сроки, которые начинаются с первого использования
Тариф может задавать длительность, например 30 дней, а не дату. Тогда учётная запись ждёт первого подключения, и её срок пока не применяется. В первую минуту после того, как узел сообщит о её трафике, срок устанавливается как этот момент плюс длительность. Получение подписки не запускает отсчёт: оно значит, что приложение прочитало ссылки, а не что кто-то подключился.
Циклы сброса
Цикл обнуляет трафик учётной записи и начинает заново.
| Цикл | Сбрасывает |
|---|---|
| Скользящий | каждые N дней после последнего сброса |
| Еженедельный, ежемесячный, ежегодный | в заданный день недели, день месяца или дату, по григорианскому или персидскому календарю |
Каждый шаг отсчитывается от опорной даты, а не от последнего сброса, поэтому учётная запись с опорой на 31-е число сбрасывается 28 февраля и снова 31 марта. Сброс применяется ежеминутной проверкой, как и всё остальное.
Предупреждения до предела
Тот же ежеминутный проход один раз выдаёт предупреждение, пока учётная запись ещё работает:
user.quota_warning, когда расход переходит долю квоты, по умолчанию 80%;user.expiring, когда до даты окончания остаётся окно, по умолчанию 7 дней и 1 день.
Каждое предупреждение выдаётся один раз на порог и запоминается в базе, так что перезапуск панели ничего не повторяет. Продажа дополнительного трафика или продление снова его взводят. Telegram, электронная почта и дополнения могут передавать предупреждения клиентам; см. Шина событий.
Лимит адресов
Лимит адресов ограничивает, со скольких адресов-источников учётная запись может подключаться одновременно, по всему парку узлов.
- Узел сам допускает новый адрес, пока по его данным учётная запись не достигла лимита, не спрашивая панель о каждом соединении.
- Каждые 10 секунд панель объединяет адреса, которые видели все узлы, урезает каждую ограниченную учётную запись до её лимита, оставляя последние замеченные адреса, и отправляет результат обратно.
- Соединение с лишнего адреса отклоняется, как только таблица дошла до узла.
Таким образом, 10-секундный цикл — это окно, в котором учётная запись может ненадолго превысить лимит на нескольких узлах. Адрес IPv4 считается сам по себе, а адрес IPv6 — по своему /64. Адрес продолжает учитываться десять минут после того, как его видели в последний раз, поэтому телефон, сменивший сеть, не блокирует сам себя. Замеченные адреса живут только в памяти; хранятся только лимиты. Когда панель показывает текущие адреса учётной записи, она читает то же объединённое представление, и чтение никогда не меняет того, что применяет парк узлов.
Ограничение скорости
Ограничение скорости ограничивает каждое направление трафика учётной записи в Мбит/с и действует на каждом узле отдельно: лимит 20 Мбит/с позволяет учётной записи использовать 20 Мбит/с на каждом узле, к которому она подключена одновременно. Бюджет скорости внутри пути данных одной машины нельзя разделить между машинами. Изменение лимита никогда его не умножает, а лимит, который сняли и вернули, доходит и до уже открытых соединений.
Лимит устройств
Лимит устройств ограничивает выдачу, а не соединения. Узел видит адреса, но никогда не устройства. Панель видит устройство, только когда приложение, которое получает подписку, присылает идентификатор устройства, как делают некоторые приложения.
- Устройству сверх лимита отказывают в подписке и в странице.
- Устройство, у которого конфигурация уже есть, продолжает подключаться, пока вы не освободите его место в учётной записи.
- Приложения, которые не присылают идентификатор устройства, обслуживаются, если не включено Лимит устройств отклоняет клиентов без идентификатора.
Лимит адресов — это половина защиты от совместного использования, отвечающая за одновременность, а лимит устройств — половина, отвечающая за распространение. Их задумано использовать вместе.
Собственные лимиты узлов
У узла может быть периодический лимит трафика: недельный, месячный или годовой. Когда его сырой трафик за период превышает лимит, панель отключает узел до следующего периода и тогда же снова включает, если только вы не отключили его сами.
Лимиты реселлеров
Лимит реселлера вычисляется, а не хранится: это трафик всех его учётных записей с начала его периода, умноженный на множитель каждого узла.
- При превышении лимита или после окончания срока ежеминутная проверка отключает все его учётные записи, и они возвращаются, когда начинается новый период или реселлер продлён.
- Реселлер с истёкшим сроком не может войти в панель, а его API-токены перестают работать, пока его не продлят.
См. Реселлеры.
Связанные страницы
- Путь пакета: где в соединении находятся лимиты и счётчики.
- Мониторинг и метрики: живые соединения и история состояния.
- Группы и массовые операции: продление, сброс и массовые изменения.
