Кратко
- QUIC задаёт накопительное число разрешённых открытий отдельно для каждого типа потока.
- Закрытие потока не возвращает открытие и не создаёт повторно используемый слот.
- Транспортное разрешение нельзя смешивать с параллельностью приложения, доступными воркерами, downstream-ресурсами и реальной операционной мощностью.
Ошибка начинается с панели, которая показывает initial_max_streams_bidi, initial_max_streams_uni или MAX_STREAMS как текущую параллельность. Она вычитает закрытые потоки и называет остаток доступными местами. Это не модель QUIC. Параметр определяет, сколько потоков данного типа другая сторона может открыть суммарно за время соединения. Он не сообщает, сколько потоков открыто сейчас.
Идентификаторы потоков кодируют инициатора и направление. Двунаправленные и однонаправленные потоки имеют отдельные пространства номеров и отдельные ограничения. Разрешение одного типа нельзя использовать для другого, а разрешение одного инициатора нельзя приписывать другому. Поэтому тип и инициатор должны оставаться отдельными полями учёта.
Отсутствующий или нулевой начальный параметр запрещает открытие соответствующего типа до последующего MAX_STREAMS. Новое значение может увеличить накопительный предел, но не уменьшить его. Не увеличивающее значение не действует и игнорируется. Сопоставлять нужно разрешённое накопительное число с максимальным порядковым номером открытого потока, а не с числом живых потоков.
В журнале отдельно фиксируются накопительное разрешение, максимальный порядковый номер, открытое и закрытое состояние, запрошенная приложением параллельность, очередь работ, доступные воркеры, память, CPU, downstream-ресурсы, достижимая пропускная способность, задержка, завершение и операционный или бизнес-результат. Закрытие меняет живое состояние, но не уменьшает разрешение. Номер закрытого потока не переиспользуется.
Превышение разрешённого числа вызывает STREAM_LIMIT_ERROR. Значения выше 2^60 также недействительны: они несовместимы с кодированием ID потока и приводят к ошибке соединения. Это правила корректности и контроля состояния, а не гарантия доступной в эксплуатации мощности, пропускной способности или бизнес-результата. Слишком строгий предел может мешать приложению, а слишком широкий увеличивает состояние, которое peer может заставить поддерживать.
STREAMS_BLOCKED означает только, что отправитель хотел создать поток, но текущий транспортный предел ему помешал. Кадр не создаёт разрешение. Он не доказывает причину запроса приложения, наличие работы, свободных воркеров, downstream-ресурсов, пропускную способность, успех или операционную мощность. Это свидетельство блокировки спроса на транспортной границе.
Пять разграничений обязательны. TR-046 относится к разрешению по байтовому flow control, TR-057 — к учёту финального размера, TR-054 — к STOP_SENDING и отмене направления, TR-053 — к закрытию соединения, TR-040 — к ID соединения и маршрутизации. Они не заменяют журнал накопительных открытий.
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров

