слов.арь · bisovka

объясни trace --простыми-словами

Иллюстрация к термину «Трейс»

Трейс

КороткоЧто-то в твоем приложении тормозит, а фраза "приложение тормозит" не дает вообще ничего полезного.

Что-то в твоем приложении тормозит, а фраза "приложение тормозит" не дает вообще ничего полезного. Трейс нужен, чтобы найти одну станцию, которая реально тянет все назад.

Вот картинка. Настоящее приложение — это не одна кухня. Это линия станций, где каждая передает заказ следующей. Заказ приходит на стойку, идет на гриль, переходит на сборку, ждет на выдаче, потом уходит за дверь. Каждая такая передача — отдельный кусок софта, который делает свою часть. (Это кухня за залом, только в масштабе: много станций, один заказ едет через все.)

И вот заказ выходит вечность, клиент раздражен. "Кухня тормозит" никому не помогает. Какая станция? Гриль забился? Сборка ждет гарнир? Нельзя починить то, что ты не можешь найти.

Трейс следует за одним конкретным талоном через все станции и замеряет каждый шаг. Ты подсвечиваешь один заказ и смотришь весь его путь: миг на стойке, миг на гриле, потом три полные секунды застрял на сборке. Вот твой виновник. Трейс не смотрел на всю кухню сразу. Он проследил один талон и показал, куда ушло время.

Это родственник лога, и разница важна. Лог — это тетрадь одной станции: все, что происходило на гриле, записано по порядку. Полезно, но он знает только про гриль. Трейс сшивает путь одного заказа через все станции сразу. Лог — по месту. Трейс — по заказу, от начала до конца. Когда проблема прячется в передачах между станциями, ни один отдельный лог ее не поймает, а трейс поймает.

(Есть еще вторая штука, которую тоже называют "trace", ты встретишь ее позже: та, которая печатается, когда одна программа падает. Она приближает камеру прямо к механике одной станции. Эта делает противоположное: отъезжает назад и следует за одним заказом через всю линию. Одно слово, противоположный зум.)

Зачем это знать человеку, который не пишет код. Когда что-то кажется медленным, а разработчик говорит "дай я подниму trace", он не смотрит на всю систему в надежде заметить беду. Он следует за одним запросом, чтобы найти медленный переход. Это разница между "checkout как-то лагает" и "checkout три секунды ждет налоговый сервис". Первое — пожать плечами. Второе — уже можно чинить.

Лог — дневник одной станции. Трейс следует за одним заказом через все станции, поэтому "где-то медленно" превращается в "медленно вот здесь".

← все термины