Přeskočit na obsah

Tato stránka byla automaticky přeložena z angličtiny, jediného jazyka, ve kterém se tento web píše. Číst originál.

I2488 — Zásobník HTTP se volí měřením: stejné trasy a několik set otevřených streamů na tiny_http a na axum

Rozhodnout, který HTTP stack sdílený server ponechá, na základě měření obou kandidátů na týchž trasách, streamované trase a dlouhodobých odběratelích, a rozhodnutí zaznamenat, aby měl repozitář jeden stack a věděl proč.

PŘIPRAVENO vlna 2 · p1 · profil hluboké práce · bezpečné paralelně

Součást development-runtime — The runtime has a development surface.

Připraveno. Všechny závislosti jsou hotové, takže majordomus plan start I2488 bude přijato.

Cíl

Rozhodnout, který HTTP stack sdílený server ponechá, na základě měření obou kandidátů na týchž trasách, streamované trase a dlouhodobých odběratelích, a rozhodnutí zaznamenat, aby měl repozitář jeden stack a věděl proč.

Proč

ADR 0142, část 3, a krok U6 vlastníkova balíčku výkonu UI, který práce na cachování odložila, protože cachovaná schopnost už odpovídá pod 6 ms při p95. Toto měření nezahrnovalo to, co streamované UI přidává: otevřené spojení na stránku. Server obsluhuje každý požadavek na vlastním vlákně, nejvýše 64 najednou (http/server.rs MAX_HANDLERS), odpověď píše vcelku a nemá kompresi. Vlastník 2026-10-12 požádal o špičkovou architekturu; balíček říká, že volba se činí podle měření výkonu na stejné trase a že se dva stacky nedrží.

Aktuální stav

tiny_http 0.12, synchronní, čtyři accept vlákna, vlákno na požadavek, nejvýše 64 handlerů, upgrady WebSocket na vlastních vláknech, bez komprese, vždy Content-Length.

Cílový stav

Bench harness spouští jeden systémový cíl na obou stacích za stejným routerem a exekutorem: cachovanou JSON route, obrazovku renderovanou serverem, streamovanou odpověď a N nečinných odběratelů WebSocket (N v 64, 256, 1024), zatímco se první tři časují; p50, p95, p99, paměť a vlákna, na release buildu na nečinném hostu. Čísla a cena přechodu (adaptér nad Context::execute, blokující handlery na omezeném poolu, pravidla deadline a admission z I2156 a převzatá ochrana vzdáleného volajícího) se zapíšou jako záznam rozhodnutí. Pokud se rozhodne přejít, přechod je samostatný úkol a odstraní tiny_http ve stejné změně.

Rozsah

  • apps/majordomus-cli/src/bench
  • apps/majordomus-cli/src/http
  • apps/majordomus-cli/Cargo.toml
  • .ai/repo/adrs
  • docs/PERFORMANCE.md
  • test/cases
  • .ai/repo/project/issues/I2488.yaml

Závislosti

Kritéria přijetí

  • Jeden cíl měření časuje tytéž tři trasy na obou stacích, s N nečinnými odběrateli i bez nich, a jeho výsledky se zaznamenávají s commitem, hostitelem a profilem sestavení
  • Záznam rozhodnutí uvádí čísla, ze kterých se rozhodovalo, a co přesun stojí, a navrhuje jeden stack
  • Ve výchozím sestavení nezůstává žádný druhý HTTP stack

Validace

  • bin/majordomus plan validate
  • majordomus bench system.http --profile quick --no-write

Požadované důkazy

  • http_stack_benchmark_results
  • http_stack_decision_record

Důkazy

Nic nezaznamenáno. Za každým tokenem výše musí stát příkaz nebo artefakt, než lze tento úkol dokončit; vyprávění se odmítá.

Časová osa

zahájeno
—
ověřeno
—
dokončeno
—

Tato tři pole, důkazy výše a stav závislostí jsou vše, z čeho se stav skládá. Neexistuje žádné pole stavu, které by s nimi mohlo být v rozporu.

Kanonický záznam: .ai/repo/project/issues/I2488.yaml. Načtěte jej zpět pomocí majordomus plan show I2488.

Prohledává názvy a popisy všech stránek, které tento web publikuje.