Як пояснити проблеми затримки в англійській мові: Описуючи проблеми продуктивності

Вчимося описувати проблеми з затримкою і швидкодією англійською мовою — вузькі місця, затримка хвоста, p99, суперечки і основні причини — за допомогою фраз для викликів і каналів інциденту.

Проблеми з швидкодією досить складно зневаджувати. Пояснення їх вголос — товаришу по команді, менеджеру або клієнту — додає другий виклик. Вам потрібні слова для “як повільно”, “де повільність” і “що її спричиняє”. У цьому підручнику ви знайдете опис проблем з затримкою, який буде ясно і достовірно описано англійською мовою.


Словник “повільно”

“Всё медленно” - это самое слабое, что ты можешь сказать. Досягти для точних термінів:

  • ** latency ** — час, який займає один запит. * « Затримка зростає повсюдно ». *
  • ** пропускна здатність ** — кількість оброблених запитів за секунду. * « пропускна здатність зменшилася вдвічі ». *
  • ** час відповіді ** — час очікування користувача. * « Часи відповіді подвоєно ». *
  • ** bottleneck ** — найповільніша частина, яка обмежує все. * « База даних — це буфер обміну ». *
  • затримка хвоста — крайня повільність (p99, p999). “Медіана в порядку; це хвіст, що болить.”
  • ** jitter ** — зміна затримки. * « На цьому шляху є багато коливань ». *
  • ** холодний запуск ** — повільний перший запит після бездіяльності. * « Холодний запуск додає 800 мс. » *
  • ** розігрів ** — період часу, який пройде до того, як кеши заповняться і процеси прискоряться.

«Медіана здорова на 40 міс, але p99 на 2 секунди — хвіст вбиває нас»


Описує, як повільно, точно

Не говори “дуже повільно”. Численно оцінюй і порівнюй.

  • “Затримка подвоєна, з 200 до 400 мілісекунд.”
  • “Ми бачимо 2-секундний час відповіді на p99.”
  • “Взросло на 40%* с момента развертывания.”*
  • “Запити затримуються через 30 секунд.”
  • “Це на порядок величини повільніше, ніж вчора.” *

Завжди додавайте процентиль або базову лінію. « Повільно у порівнянні з чим? » — це перше питання, яке ви отримаєте.


Сказати, де повільність

Ясне пояснення локалізує проблему. Використовувати просторову та структурну мову:

    • “Повільність є ** на шляху читання **, а не на шляху запису.” *
  • “Це передній кеш — сам кеш не має жодних проблем.”
    • “Віком, який витрачається ** на базу даних **, зокрема, на один запит.” *
  • “Це на рівні мережі — код програми швидкий.”
  • “Вузол знаходиться в нижній частині, в платіжній службі.”

** Вгору по течії ** = раніше в потоці, в напрямку джерела. ** Вниз по течії ** = пізніше, в напрямку споживача. Зрозуміло, що це зробить тебе точним.


Название причины

Спільними причинами затримки є такі, що мають природні формулювання:

  • ** dispute ** — компоненти борються за спільний ресурс. * “У таблиці замовлень є конфлікт блокування.” *
  • ** вичерпання ресурсів ** — закінчується ресурс. * « Ми вичерпали резерв з’ єднань. » *
  • N+1 запитів — один запит на рядок замість одного пакетного запиту. “Це N+1 — ми вдарили по базі даних один раз на елемент.”
  • ** блокування заголовка рядка ** — один повільний запит затримує всі інші.
  • ** retry storm / retry amplification ** — повторні спроби множення навантаження. * “Спроби посилення проблеми.” *
  • ** GC pause ** — збір сміття заморожує програму. * “Довга пауза GC затримала службу.” *
  • ** thundering herd ** — багато клієнтів, які зазнають втрат одночасно після закінчення терміну дії кешу.
  • ** виклики з розмовою ** — забагато коротких мережевих поїздок у обидві сторони. * « Служба занадто розмовляє ». *

«Це класичний N+1 — сторінка завантажується добре з десятьма елементами, але перевищує тисячу, тому що ми запитуємо базу даних за рядком»


Причинно-наслідкова мова

Зв’язок між причиною і наслідком є тим, що робить пояснення дійсним:

    • “Пік затримки ** спричинено ** заповненням бази даних з’ єднань.” *
    • “Коли кеш закінчується, трафік заливає базу даних, що збільшує затримку.” *
    • “Повільний запит блокує з’ єднання, отже інші запити стоять у черзі за ним.” *
    • “Якщо навантаження зростає, то зростає і конкуренція, ** що в свою чергу ** збільшує затримку.” *

Корисні сполучення: **бо, тому, що означає, що в свою чергу, як результат, веде до, веде до. **


Фрази для каналу інциденту

  • “затримка p99 досягла піку о 14:00, в порядку з розгортанням.”
  • “Ми бачимо хвостову затримку без зростання трафіку - це дивна частина.”
    • “Вузол - це один повільний запит; у мене є план EXPLAIN.” *
  • “Це суперечка, а не ємність — додавання реплік не допоможе.”
  • “Затримка відновлюється, як тільки ми знімаємо навантаження.”
  • “Це пахне як повторна спроба шторму.”

Дієслово to shed load (намірно відкинути деякі запити, щоб відновити) і фраза “this smells like” (неформальна передчуття) є дуже природні.


Пояснення для нетехнічної аудиторії

Коли ви говорите з менеджером або клієнтом, забудьте про жаргон і використовуйте аналогії:

    • “Уявіть собі чергу в касі - один повільний касир підтримує всіх, хто за ним.” *
  • “Більшість запитів швидкі, але найповільніший 1% дуже повільний, і саме на це скаржяться користувачі.”
  • “У нас не вистачало місця для обробки запитів, тому вони стояли в черзі.”

Свідок з ** ударом **, а не механізм:

    • “Користувачі на сторінці оплати чекають до 5 секунд. Ми знайшли причину і ми розгортаємо виправлення зараз. “*

До і після

** До: ** “Сайт працює повільно. Думаю, что-то не так с сервером. Це було погано на деякий час»

** Після: ** “Затримка p99 при виході збільшилася з 300 мс до 2 секунд близько 14:00, відразу після розгортання. Причиною є запит N+1, який з’ являється тільки з великими візками. Медіана в порядку, тому більшість користувачів не постраждали — це важкі візки, що вдаряються в хвіст. Ми розробляємо запит і розгортаємо за 20 хвилин»

Та ж ситуація, але тепер всі знають як повільно, для кого, чому, і коли це буде виправлено.


Поширені помилки

  • ** « Це повільно » без цифри. ** Завжди вказуйте значення і базову лінію.
  • ** Затримка і пропускна здатність не збігаються. ** Затримка — за запит, пропускна здатність — за секунду.
  • Среднее значение. Среднее значение скрывает хвост. Використовувати медіану і p99.
  • Смешивание вверх и вниз по течению. Знайте, в каком направлении вы имеете в виду.
  • Відповідь з механізмом для нетехнічної аудиторії. Відповідь з впливом, потім поясни.

Ключевые вещи

  • Виміряти повільність за допомогою ** процентиля ** і ** базисної лінії **.
  • Локалізувати: ** читання проти запису, шлях до потоку проти шляху до потоку, який шар**.
  • Назвіть причину: ** суперечка, N+1, повторна спроба, GC пауза, виснаження**.
  • Використовуйте причинно-наслідкові сполучення: що означає, піднімається, як результат.
  • Для нетехнічних слухачів, ведуть з ** вплив ** і використовують ** аналогію **.

Поясни затримку так, і люди довірять і твоїй діагностиці, і твоїй лікуванні.

Розуміння нюансів для не-рідних мовців

Комунікація технічних питань чітко є ключовою, але опис * latency * - затримка між запитом і його відповіддю - може бути особливо складною. Часто, це не просто заява «це повільно». Ключ полягає в точності і ефективному формулюванні проблеми, особливо коли справа доходить до колег, які можуть мати різні рівні володіння англійською мовою або технічне підґрунтя. Для носіїв, для яких англійська не є рідною, найважливіше освоїти конкретний словник, пов’язаний з виступом. Недостатньо просто сказати «система відстає»; вам потрібно сформулювати * чому * вона відстає, і кількісно оцінити цю затримку, де це можливо. У цьому розділі ми зосередимося на тому, щоб дати вам змогу ознайомитися з мовою, необхідною для впевненого керування цими розмовами, як під час перегляду коду, так і під час звітування про подію або обговорення оптимізації швидкодії вашої програми.

Розглядайте затримку як багатовимірну. Можливо, ви відчували високу * затримку хвоста *, що стосується довгих затримок, які спостерігаються лише у невеликому відсотку запитів — можливо, у 1% найповільніших. Це часто набагато критичніше, ніж середня затримка, тому що це безпосередньо впливає на досвід користувача для цих декількох осіб. Потім є * суперечка *, де декілька процесів конкурують за ті ж ресурси, такі як з’ єднання з базою даних або пропускна здатність мережі, створюючи вузькі місця. Опис цих концепцій вимагає ретельного формулювання. Замість того, щоб сказати «база даних повільна», точнішим було б твердження: «Ми спостерігаємо підвищену затримку хвоста в наших запитах бази даних, зокрема затримку p99, що перевищує 500 мс для запитів, що походять з мобільного додатку». Крім того, ідентифікація *корінної причини * - чи це неефективний код, недостатні апаратні ресурси або перевантаження мережі - є важливою для ефективного розв’язання.

Розглянемо такий сценарій: Під час перегляду коду ви помічаєте повільну кінцеву точку API. Ви можете просто сказати « Цей API повільний ». Це не надасть вам багато корисної інформації. Замість цього, ви можете сформулювати проблему так: «Я спостерігав збільшення затримки в цій кінцевій точці, зокрема p99 1,2 секунди. Це, здається, пов’ язано з надмірним блокуванням бази даних під час пікових навантажень, що, можливо, погіршилося через недавні зміни масштабування. Я пропоную дослідити оптимізацію запиту і розглянути можливість додавання відповідної логіки повторних спроб. Зауважте, наскільки більш докладним і корисним є це формулювання — воно звертає увагу на конкретні метричні (p99), потенційні причини (блокування бази даних, зміни масштабування) і запропоновані рішення (оптимізація запиту, логіка повторних спроб).

Нарешті, пам’ятайте, що активне слухання відіграє значну роль. Не просто кидайте в когось технічний жаргон; справді спробуйте зрозуміти їхню точку зору і відповідно змініть свій стиль спілкування. Запитання прояснюючих питань, таких як «Чи можете ви розібратися, що ви маєте на увазі під «високою затримкою» в цьому контексті?», Може бути неймовірно цінним.

# Example: Using `ping` to measure network latency

ping -c 5 google.com

Ця проста команда, за допомогою інструменту ping, демонструє основний спосіб вимірювання затримки мережі - час, який потрібно для передачі пакета між вашим комп’ютером і серверами Google. У виводі буде показано часи поїздок у обидві сторони (RTT) для кожного ping, які є прямим показником затримки. Хоча ping є швидким інструментом діагностики, пам’ ятайте, що він вимірює лише * мережеву * затримку; він не враховує затримки всередині самої програми.

Поширені запитання

Про що ця стаття "Як пояснити проблеми затримки в англійській мові: Описуючи проблеми продуктивності"?

Вчимося описувати проблеми з затримкою і швидкодією англійською мовою — вузькі місця, затримка хвоста, p99, суперечки і основні причини — за допомогою фраз для викликів і каналів інциденту.

Чи безкоштовна ця стаття?

Так. Усі статті на CoderSlingo, включно з цією, доступні безкоштовно без реєстрації.

Скільки часу займає читання "Як пояснити проблеми затримки в англійській мові: Описуючи проблеми продуктивності"?

Приблизно 9 min.