[Tracing] Provide more subspans
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Ferma
- Stack tecnologico
- swift
- Ambito
- networking, observability
Direzione di ricerca
Inizia leggendo l’issue #868 e seguendo il codice intorno a HTTPClient.execute, quindi identifica come il connection pooling, il DNS, la configurazione della connessione e lo streaming di richieste/risposte sono attualmente rappresentati negli span emessi. Il lavoro è completato quando il trace espone le fasi temporali annidate richieste, inclusi l’accodamento o il riutilizzo, la creazione della connessione, il DNS e l’attività di richiesta/risposta HTTP.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Similar to #868, but represented as spans.
Right now, requests appear to be taking way longer than I would expect, and I suspect that's because of the connection pool warming up, not the actual request. This should be visible in the emitted spans.
From #868:
- How long did this request spend in the connection pool queue
- How long did it take to make a connection (if one didn't already exist)
- How long did it take to send the request
- DNS timings
Mapped to spans, one way this could look that'd allow me to better understand where time is being spent:
| ---------------------------------------------- HTTPClient.execute ----------------------------------------------------- |
| ----------------------- Request 1 ---------------------- | | --------- Request 2 (redirect to the same host) -------- |
| ------ New connection ------ | | ----- HTTP req/res ---- | | --- Queued/reused connection --- | | -- HTTP req/res -- |
And zooming in:
| ------------------------ New connection ------------------------- |
| --- DNS lookup --- | | --- TCP est --- | | --- TLS handshake --- |
And (below is an example of bidi streaming, when the request and response bodies overlap; in a simple non-streaming example, the request and response wouldn't overlap - important bit is that all 4 subspans would have "HTTP req/res" as the parent span)
| ------------------------------------------- HTTP req/res ------------------------------------------ |
| --- HTTP req head --- | | ------------ HTTP req body ------ |
| --- HTTP res head --- | | ------- HTTP res body ---- |
The goal is for you to be able to gland at the trace and quickly identify where the bulk of time was spent - mainly: pre-request or inside the request.
- Lingua principale
- Swift
- Stelle
- 1.1k
- Fork
- 156
- Merge medio
- 1h 54m
- PR unite (30g)
- 4
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di swift-server/async-http-client
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 22/100
-
Invalid state: idleAperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
swift-server/async-http-client#927 · 2 commenti ·
-
Windows versionAperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 38/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
swift-server/async-http-client#923 · 1 commento ·
-
Crash in `HTTP2ClientRequestHandler`Forse già presa @rupayon123 l’ha presa 18 giorni fa. Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 72/100
Tutte le issue di swift-server/async-http-client
Issue simili
-
bug good first issue help wanted
Difficoltà 2/5 1-3 ore Idoneità per principianti 63/100
marcovisona/arca#5 ·
-
accessibility bug medium-priority mobile
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
lognorman20/monaco#6247 ·
-
documentation windows
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
swiftlang/swift-format#1312 ·