Files
progcode/web/public/assets/editorial/2018/http-timeout-investigation-2018.svg
T
huncode 7c53ffe6bc
Build and deploy / deploy (push) Successful in 14s
revise July and August 2018 articles
2026-07-31 09:41:53 +03:00

61 lines
5.6 KiB
XML

<svg xmlns="http://www.w3.org/2000/svg" width="960" height="590" viewBox="0 0 960 590" role="img" aria-labelledby="title desc">
<title id="title">Разбор зависшего HTTP-запроса по стадиям</title>
<desc id="desc">Дерево диагностики: сначала фиксируется curl error и HTTP-код, затем сравниваются времена DNS, соединения, TLS, первого байта и общего запроса. Для каждой наблюдаемой точки указан следующий шаг без автоматического повтора небезопасной операции.</desc>
<defs>
<linearGradient id="bg" x1="0" y1="0" x2="0" y2="1">
<stop offset="0" stop-color="#15233d"/>
<stop offset="1" stop-color="#102038"/>
</linearGradient>
<marker id="a" markerWidth="10" markerHeight="10" refX="7" refY="3" orient="auto">
<path d="M0,0 L0,6 L8,3 z" fill="#a7c7e8"/>
</marker>
</defs>
<rect width="960" height="590" rx="28" fill="url(#bg)"/>
<text x="48" y="64" fill="#fff" font-family="Arial, sans-serif" font-size="26" font-weight="700">Зависшая интеграция: не угадывать, на какой стадии ждать</text>
<text x="48" y="98" fill="#c7d9eb" font-family="Arial, sans-serif" font-size="18">Один лог запроса показывает границу следующей проверки</text>
<rect x="346" y="132" width="268" height="66" rx="14" fill="#5f7eea"/>
<text x="382" y="160" fill="#fff" font-family="Arial, sans-serif" font-size="18" font-weight="700">curl_exec завершился</text>
<text x="394" y="184" fill="#eaf0ff" font-family="Arial, sans-serif" font-size="15">error + HTTP-код + времена</text>
<line x1="480" y1="198" x2="208" y2="255" stroke="#a7c7e8" stroke-width="3" marker-end="url(#a)"/>
<line x1="480" y1="198" x2="480" y2="255" stroke="#a7c7e8" stroke-width="3" marker-end="url(#a)"/>
<line x1="480" y1="198" x2="752" y2="255" stroke="#a7c7e8" stroke-width="3" marker-end="url(#a)"/>
<rect x="62" y="270" width="292" height="116" rx="16" fill="#263e64" stroke="#7fa8d5"/>
<text x="87" y="303" fill="#fff" font-family="Arial, sans-serif" font-size="19" font-weight="700">Нет HTTP-кода</text>
<text x="87" y="332" fill="#d7e8f7" font-family="Arial, sans-serif" font-size="16">Смотрим name lookup,</text>
<text x="87" y="355" fill="#d7e8f7" font-family="Arial, sans-serif" font-size="16">connect, appconnect.</text>
<text x="87" y="378" fill="#a9c7ea" font-family="Arial, sans-serif" font-size="15">Граница: сеть или TLS.</text>
<rect x="334" y="270" width="292" height="116" rx="16" fill="#5a3a51" stroke="#df8192"/>
<text x="359" y="303" fill="#fff" font-family="Arial, sans-serif" font-size="19" font-weight="700">Первый байт поздний</text>
<text x="359" y="332" fill="#f2d9df" font-family="Arial, sans-serif" font-size="16">connect завершён,</text>
<text x="359" y="355" fill="#f2d9df" font-family="Arial, sans-serif" font-size="16">starttransfer растёт.</text>
<text x="359" y="378" fill="#f3b4c0" font-family="Arial, sans-serif" font-size="15">Граница: партнёр или очередь.</text>
<rect x="606" y="270" width="292" height="116" rx="16" fill="#5b4b37" stroke="#f1b15f"/>
<text x="631" y="303" fill="#fff" font-family="Arial, sans-serif" font-size="19" font-weight="700">Тело идёт слишком долго</text>
<text x="631" y="332" fill="#fff0d6" font-family="Arial, sans-serif" font-size="16">starttransfer есть,</text>
<text x="631" y="355" fill="#fff0d6" font-family="Arial, sans-serif" font-size="16">total упирается в лимит.</text>
<text x="631" y="378" fill="#ffd99b" font-family="Arial, sans-serif" font-size="15">Граница: размер или скорость.</text>
<line x1="208" y1="386" x2="208" y2="426" stroke="#a7c7e8" stroke-width="3" marker-end="url(#a)"/>
<line x1="480" y1="386" x2="480" y2="426" stroke="#a7c7e8" stroke-width="3" marker-end="url(#a)"/>
<line x1="752" y1="386" x2="752" y2="426" stroke="#a7c7e8" stroke-width="3" marker-end="url(#a)"/>
<rect x="62" y="442" width="292" height="112" rx="14" fill="#18314f"/>
<text x="87" y="476" fill="#fff" font-family="Arial, sans-serif" font-size="16" font-weight="700">Проверить адрес, DNS и CA</text>
<text x="87" y="524" fill="#c7d9eb" font-family="Arial, sans-serif" font-size="15">Не лечить ростом общего лимита.</text>
<rect x="334" y="442" width="292" height="112" rx="14" fill="#18314f"/>
<text x="359" y="476" fill="#fff" font-family="Arial, sans-serif" font-size="16" font-weight="700">Передать время и ID</text>
<text x="359" y="497" fill="#fff" font-family="Arial, sans-serif" font-size="16" font-weight="700">партнёру</text>
<text x="359" y="524" fill="#c7d9eb" font-family="Arial, sans-serif" font-size="15">Повтор только по контракту операции.</text>
<rect x="606" y="442" width="292" height="112" rx="14" fill="#18314f"/>
<text x="631" y="476" fill="#fff" font-family="Arial, sans-serif" font-size="16" font-weight="700">Проверить объём ответа</text>
<text x="631" y="497" fill="#fff" font-family="Arial, sans-serif" font-size="16" font-weight="700">и низкую скорость</text>
<text x="631" y="524" fill="#c7d9eb" font-family="Arial, sans-serif" font-size="15">Отдельно считать неполный ответ.</text>
</svg>