Применение возможностей анализа на уровне кода тестирования производительности
Применение возможностей анализа на уровне кода тестирования производительности

Помимо автоматического построения топологии, Анализ уровня кода Способность также является очень важной способностью.。Топология связиМожет помочь инженерам по тестированию производительностиБыстро определите, какой экземпляр имеет исключениеАнализ уровня коданоИди дальше。Топология связи Показывает метод запроса одного экземпляра по ссылке.Логика выполнения и время выполненияиИнформация о возможных исключениях,Предоставьте инженерам-испытателям возможность выполнять задачи. На основании представленных данных,Инженеры по тестированию производительности могут провести углубленный анализ по следующим аспектам:

Вызов трудоемкого анализа

Время звонка: Анализ. уровня кодав способностиОсновная часть,Система отображает подробную информацию о методе, использованном для выполнения текущего запроса в этом экземпляре.,включатьНазвание метода и информация, требующая много времени。в,Имя метода в основном относится к вызываемому в данный моментНазвание каждого метода,Вообще говорявключать ЧтоИнформация о параметрах,Инженерам-испытателям удобно определять, где находятся аномальные точки.В каком коде。Информация, требующая много времени, относится к текущему методу.Время завершить исполнение

Оптимизация производительности – важный аспект,и Длительный анализ кода(Также известно как профилирование производительности илиprofiling)является важным шагом в выявлении узких мест и повышении эффективности программы.。Ниже я приведу простойPythonПример, демонстрирующий, как использоватьcProfileмодуль для выполнения трудоемкого анализа。

cProfileдаPythonвстроенный Анализ производительностиинструмент,Это может помочь разработчикам понять время выполнения и количество вызовов каждой части программы во время ее работы.。Вот простой пример, показывающий, как использоватьcProfileВыполнять трудоемкий анализ функций。

Пример кода

Сначала мы создаем простой скрипт с некоторыми функциями, измеряющими время выполнения.

Язык кода:javascript
копировать
import timeimport random​def slow_function():    print("Начать выполнение медленной функции...")    time.sleep(random.randint(5, 8))  # Имитация трудоемких операций    print("Медленное выполнение функции завершено.") def fast_function():    print("Быстрое выполнение функции...")    time.sleep(random.randint(1, 6)/10)  # Имитация более быстрых операций    print("Быстрое выполнение функции завершено.") def main():    print("Основная программа начинает выполняться...")    slow_function()    for _ in range(1):        fast_function()    print("Выполнение основной программы завершается.")​if __name__ == "__main__":    main()if __name__ == "__main__":    import cProfile    cProfile.run('main()', sort='cumulative')

Вот-s cumtimeилиsort='cumulative'Параметр указывает, что выходные результаты сортируются по совокупному времени.,Таким образом, вы сможете увидеть, какие функции занимают больше всего времени.

Результаты бега следующие:

аналитический отчет

После выполнения приведенной выше команды вы увидите аналогичный вывод, который включает в себя такую ​​информацию, как количество вызовов каждой функции, общее время и среднее время каждого вызова. Эти данные очень полезны для идентификации. узкие места производительности.

На картинке выше,action=zpblog&appname=pcsearch&sid=xxxxxxЭто интерфейс, который обрабатывает запросы пользователей в текущем экземпляре.。Это отнимает много времени225Миллисекунды указывают текущее время, затрачиваемое интерфейсом.225Обработка завершена за миллисекунды。

конечно,Каждая аналитическая платформа может представлять это по-своему.,Но логика реализации последовательная,Система использует визуальноеВиды, цвета и цифры,Позвольте инженерам по тестированию быстро понять, сколько методов прошел тестовый запрос.,Сколько времени занимает каждый метод? Если есть метод, который занимает много времени,Инженеры по тестированию могут быстроИмя экземпляра, IP, имя метода, затраты времениждать Информация передана аналитикамили Инженер-разработчик,Они могут уточнить направление анализа проблемы на основе данных стресс-тестов и назвать данные, требующие много времени.

SQL-анализ

существуют в обычных системахМножество SQL-вызовов,Эти вызовы SQL также могут стать узким местом производительности.,Поэтому анализ предложений SQL очень важен.

Аналитическая платформа автоматически фиксируетвызовсвязанный с КитаемиизОператоры SQL и их затраты времени,Для каждого вызова SQL собирается и отображается полный оператор SQL.,включатьпараметры запросаждать。Если инженер по тестированию обнаружит, что узким местом производительности являетсяS0Lвызов,как обычноselect* или большое количество операторовwhereждатьноможет быть полнымSQLзаявлениекопировать并提交给Инженер-разработчикилиDBA(администратор базы данных),Провести идентификацию и устранение проблем.

SOL相关из性能问题不仅仅даЕсть проблема с написанием предложений,Конфигурация пула соединений необоснованнатакже приведет кSQLзаявление Длительное время выполнения,Эта ситуация часто проявляется в том, что в методе gelConnection базы данных требуется много времени.,Если база данныхНеправильная конфигурация пула соединений.,появитсяАналогичные проблемы с производительностью при большом количестве подключений к базе данных.

Анализ аномалий

несмотря надаОткрыт новый бизнесСцена все ещедастадия регресса,В ходе ежедневного стресс-тестирования в тестируемых приложениях могут возникать аномалии.,Однако при реализации традиционных методов тестирования практически не существует инструментов анализа аномальных данных.,Решение об исключении основано только на частоте сбоев и коде состояния HTTP.,Если вам необходимо узнать подробности исключения, необходимо вмешаться разработчику. При этом из-за отсутствия аномальной информации некоторые сцены невозможно воспроизвести.,Разработчикам также сложно быстро найти,Инженерам по тестированию и инженерам-разработчикам необходимо много общаться,Влияет на процесс настройки теста производительности и на ход теста производительности.

Таким образом, аномальный анализ и аномальное сохранение полевых данных также являются двумя важными возможностями. Обычный анализ в основном включает в себя различные исключения, возникающие во время выполнения кода.,как обычноИсключение нулевого указателяИсключение выхода за пределы массива, исключение, связанное с базой данныхждать。Эти аномалии приведут к значительному снижению вероятности успеха во время реального стресс-тестирования.,Такие проблемы необходимо обнаруживать и решать как можно скорее.,Сохранение данных об исключениях, а затем внимание к типу исключения.,Код исключения、Используйте рамки。ПринадлежностьПриложение, протокол запроса, имя потока, стек потокаждатьинформация,Инженеры-испытатели могут использовать платформу анализа, чтобы максимально сохранить аномальный участок.,Оставьте это инженеру-разработчикуАнализируйте и исправляйте

Анализ журналов

Анализ журналов в настоящее время является широко используемым методом.,Когда возникает исключение,Инженер по тестированию также войдет на сервер, на котором находится тестируемое приложение.,время прохождения,Такая информация, как протестированный интерфейс, анализируется в массивных журналах.,Эффективность устранения неполадок низкая. Из-за большого объёма логов,Даже если вы фильтруете по периоду времени стресс-теста,Есть еще много данных,Инженер по тестированию не может точно определить, создается ли выходной журнал в рамках этого сценария стресс-теста.,Это также может быть ошибка журнала, вызванная другими неправильными операциями.。Таким образом, на основе ссылок Анализ Также появилась функция журналов.

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

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

ОсуществленныйПривязка запросов и логов,Журналы, созданные каждым запросом, будут отображаться независимо.,Уменьшите количество вводящей в заблуждение информации, вызванной другими запросами

Если вы что-то приобретете после прочтения, ваше внимание, лайки, пересылки, комментарии и т. д. - моя самая большая поддержка! ! !

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose