Skip to content

AgentProxy 0.14

Choose a tag to compare

@aokazantsev aokazantsev released this 24 Oct 05:18
· 25 commits to main since this release
  • Ограничение скорости в правилах (add_rule, update_rule): новые поля download_kbps (скорость ответа клиенту) и upload_kbps (скорость чтения тела запроса от клиента), кбит/с, 1..1000000, у любого действия. Действие delay теперь «только замедлить»: нужен delay_ms, download_kbps или upload_kbps. Скорость правила общая на все запросы и соединения, которые оно замедляет, как одна медленная сеть; запрос под несколькими правилами идёт по самому медленному, и его байты учитываются только в нём. Работает и для ответов сервера, и для respond и sse. Таймаут чтения приложения срабатывает только на паузе без данных: по HTTPS запись TLS в 16 КБ идёт не меньше 131 / download_kbps секунд и дольше, пока правило замедляет несколько передач сразу; по HTTP паузы короткие.
  • Замедляется соединение клиента, пока по нему идёт подходящий запрос. На HTTP/1.1 это ровно этот запрос; хосту из условия host такого правила прокси даёт новым соединениям только HTTP/1.1. На HTTP/2 (нет host, соединение открыто до правила, клиент только HTTP/2) соединение замедляется целиком до закрытия. У запроса в поле rules пометка limited: request или connection; соединения не TCP — skipped. Ответ add_rule/update_rule подсказывает про перезапуск приложения и про host. Новая скорость в update_rule действует сразу, и на идущий ответ; удаление и выключение правила снимают ограничение сразу.
  • Скилл agentproxy: раздел «Скорость» в rules.md.
  • Известные ограничения скорости: WebSocket, открытый запросом под правилом, замедлен до закрытия (пометка у него limited: request); хост по IP-адресу без SNI на HTTP/1.1 не переводится; upload_kbps на соединении HTTP/2 замедляет и служебные кадры клиента; на HTTP/2 лимит правила держится и после исчерпания times; пометка skipped «not TCP» бывает и при сбое обёртки соединения (причина — в read_log).