Производительность сервиса на Go зависит от рабочей нагрузки, объёма данных, зависимостей и оборудования. Показатели QPS и задержки имеют смысл только при воспроизводимом описании теста. Это руководство по планированию объясняет, что измерять и как проверять предложение по оптимизации; оно не гарантирует пропускную способность или время ответа.
Определите рабочую нагрузку до постановки цели
| Входные данные | Что зафиксировать в плане тестирования | Почему это важно |
|---|---|---|
| Трафик | Состав запросов, число одновременных пользователей, всплески и длительность теста | Один кэшируемый эндпоинт не отражает работу продукта |
| Данные | Размер набора данных, структура запросов и состояние кэша | Небольшие или прогретые наборы данных могут скрыть ограничения базы данных |
| Среда | ЦП, память, сеть и внешние зависимости | Результаты нельзя переносить между средами без изменений |
| Результат | Перцентильная задержка, доля ошибок, пропускная способность и использование ресурсов | Средняя задержка скрывает медленные запросы и сбои |
Измерьте узкое место
Используйте профилирование для анализа загрузки ЦП, выделений памяти и блокировок, а трассировки — чтобы отслеживать время, затраченное на каждом этапе запроса. Ожидание соединения с базой данных, медленные запросы и внешние API могут доминировать даже при низкой загрузке ЦП приложения. Профилирование создаёт накладные расходы, поэтому зафиксируйте факт его использования и сравнивайте результаты в согласованных условиях. См. официальное руководство Go по диагностике.
Внесите одно изменение относительно базового показателя
Возможные изменения включают индексацию запросов, ограничение параллелизма, тайм-ауты контекста, настройку пула соединений или кэширование. Укажите предполагаемый механизм, правила инвалидации и поведение при сбоях. Сравнивайте каждое изменение с базовым показателем при одинаковой рабочей нагрузке; сохраняйте изменение только в том случае, если целевое поведение и производительность улучшаются одновременно.
Запросите проверку производительности бэкенда
Подготовьте затронутые эндпоинты, наблюдаемый трафик, примеры задержек и ошибок, размер базы данных, ограничения хостинга и описание предыдущего метода тестирования. Удалите из трассировок учётные данные и персональные данные. Узнайте о разработке бэкенда и бизнес-систем или отправьте краткое описание задачи по проверке производительности. До начала внедрения согласуйте измеримые критерии приёмки и план отката.
