x
 
Василий
6 августа 2020
Советы почтой каждую неделю
Пожалуйста, получите наше письмо, чтобы подтвердить свой адрес:
Вы подписаны на «Советы за неделю»:

Ино­гда баги вызваны про­из­во­ди­тель­но­стью при­ло­же­ния или свя­зан­ных с ним ком­по­нен­тов: баз дан­ных, кэшей, оче­ре­дей отло­жен­ных задач и прочих.

В Издательстве бюро

Авторы жалу­ются, что в чер­но­ви­ках книг пере­стали гене­ри­ро­ваться пре­вьюшки раз­во­ро­тов. В оглав­ле­нии висят пустые раз­во­роты, что сильно дезориентирует.

Пре­вьюшки гене­ри­рует без­го­ло­вый Хром — пол­но­цен­ный бра­у­зер без гра­фи­че­ского интер­фейса, кото­рым управ­ляют про­граммно через АПИ. Чтобы сге­не­ри­ро­вать пре­вьюшку, бэкенд изда­тель­ства откры­вает ука­зан­ный раз­во­рот в без­го­ло­вом Хроме, делает скрин­шот и пере­жи­мает его до нуж­ных размеров.

Этот про­цесс зани­мает пять‑шесть секунд, поэтому пре­вьюшки гене­ри­ру­ются лениво и асин­хронно. Когда раз­во­рот изме­ня­ется, бэкенд уда­ляет ста­рую пре­вьюшку. Когда автор откры­вает книгу, его бра­у­зер запра­ши­вает пре­вьюшку. Если пре­вьюшки нет, бэкенд добав­ляет в оче­редь отло­жен­ных зада­ний задачу «Сге­не­ри­ро­вать пре­вьюшку» и про­сит бра­у­зер повторно запро­сить пре­вьюшку попозже.

Чтобы понять, почему пре­вьюшки не гене­ри­ру­ются, загля­ды­ваем в мет­рики оче­реди задач. В оче­реди уже около мил­ли­она таких задач. Скрин­шоты не успе­вают сге­не­ри­ро­ваться за десять секунд, про­цесс пре­ры­ва­ется, задача снова встаёт в оче­редь. Фрон­тенд не полу­чает пре­вьюшку и про­сит бэкенд сге­не­ри­ро­вать её, добав­ляя про­блем­ных задач в очередь.

Чтобы понять, почему скрин­шоты не успе­вают сге­не­ри­ро­ваться за десять секунд, загля­ды­ваем в логи скрин­шо­тилки: Хром не дожи­да­ется ответа от бэкенда. Загля­ды­ваем в мет­рики бэкенда: кон­трол­лер, отда­ю­щий книгу Хрому, боль­шую часть вре­мени тра­тит на сверку и син­хро­ни­за­цию изме­не­ний в книге.

Уби­раем сверку и син­хро­ни­за­цию: скрин­шо­тилке доста­точно послед­ней доступ­ной вер­сии раз­во­рота. Скрин­шоты снова нор­мально генерируются.

Без отсле­жи­ва­ния про­из­во­ди­тель­но­сти при­ло­же­ния и его инфра­струк­туры понять при­чину этой про­блемы было бы трудно: при­ш­лось бы всле­пую уга­ды­вать, в чём дело.

Чтобы отсле­жи­вать про­из­во­ди­тель­ность при­ло­же­ний и инфра­струк­туры, про­грам­ми­сты при­ду­мали целый класс при­ло­же­ний, APM — application performance monitoring. Самые попу­ляр­ные из них:

Кроме того, систему мони­то­ринга про­из­во­ди­тель­но­сти можно собрать самим из Prometheus и Grafana.

Важ­ный момент: если хотите, чтобы от мет­рик была польза, их мало отсле­жи­вать — никто не ста­нет после каж­дого деп­лоя сле­дить за всеми доступ­ными гра­фи­ками. Настройте авто­ма­ти­че­ские опо­ве­ще­ния о про­бле­мах с про­из­во­ди­тель­но­стью и убе­ди­тесь, что их читают и на них реагируют.

Ещё по теме

P. S. Это был совет о веб‑разработке. Хотите знать всё о коде, тестах, фронтенд‑разработке, цеэсэсе, яваскрипте, рельсах и джейде? Присылайте вопросы.
Вёрстка и прототипирование — дисциплина Школы дизайнеров. Набор открыт. Чем раньше поступите, тем ниже стоимость и выше шанс на бесплатное место.
 

Поделиться
Отправить

Цель рубрики — обсуждение вопросов дизайна всех видов, текста в дизайне и взаимоотношений дизайнеров с клиентами.

Мы публикуем комментарии, которые добавляют к уже сказанному новые мысли и хорошие примеры. Мы ожидаем, что такие комментарии составят около 20% от общего числа.

Решение о публикации принимается один раз; мы не имеем возможности комментировать или пересматривать свое решение, хотя оно может быть ошибочно. Уже опубликованные комментарии могут быть удалены через некоторое время, если без них обсуждение не становится менее ценным или интересным.

Вот такой веб 2.0.

Как бороться с багами? Часть десятая: не утонуть в багах и глюках Как организовать процесс сдачи задачи и код-ревью в рамках спринта? Типовые решения в вёрстке. Как форматировать ХТМЛ 9 Что нужно, чтобы сайт на Айфоне выглядел также как на Андроиде, а не в два раза меньше? 1




Недавно всплыло

2 6 5 7