Помимо автоматического построения топологии, Анализ уровня кода Способность также является очень важной способностью.。Топология связиМожет помочь инженерам по тестированию производительностиБыстро определите, какой экземпляр имеет исключение,иАнализ уровня коданоИди дальше。Топология связи Показывает метод запроса одного экземпляра по ссылке.Логика выполнения и время выполненияиИнформация о возможных исключениях,Предоставьте инженерам-испытателям возможность выполнять задачи. На основании представленных данных,Инженеры по тестированию производительности могут провести углубленный анализ по следующим аспектам:。
Время звонка: Анализ. уровня кодав способностиОсновная часть,Система отображает подробную информацию о методе, использованном для выполнения текущего запроса в этом экземпляре.,включатьНазвание метода и информация, требующая много времени。в,Имя метода в основном относится к вызываемому в данный моментНазвание каждого метода,Вообще говорявключать ЧтоИнформация о параметрах,Инженерам-испытателям удобно определять, где находятся аномальные точки.В каком коде。Информация, требующая много времени, относится к текущему методу.Время завершить исполнение。
Оптимизация производительности – важный аспект,и Длительный анализ кода(Также известно как профилирование производительности илиprofiling)является важным шагом в выявлении узких мест и повышении эффективности программы.。Ниже я приведу простойPythonПример, демонстрирующий, как использоватьcProfile
модуль для выполнения трудоемкого анализа。
cProfile
даPythonвстроенный Анализ производительностиинструмент,Это может помочь разработчикам понять время выполнения и количество вызовов каждой части программы во время ее работы.。Вот простой пример, показывающий, как использоватьcProfile
Выполнять трудоемкий анализ функций。
Сначала мы создаем простой скрипт с некоторыми функциями, измеряющими время выполнения.
import timeimport randomdef 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.,включатьпараметры запросаждать。Если инженер по тестированию обнаружит, что узким местом производительности являетсяS0Lвызов,как обычноselect* или большое количество операторовwhereждатьноможет быть полнымSQLзаявлениекопировать并提交给Инженер-разработчикилиDBA(администратор базы данных),Провести идентификацию и устранение проблем.
SOL相关из性能问题不仅仅даЕсть проблема с написанием предложений,Конфигурация пула соединений необоснованнатакже приведет кSQLзаявление Длительное время выполнения,Эта ситуация часто проявляется в том, что в методе gelConnection базы данных требуется много времени.,Если база данныхНеправильная конфигурация пула соединений.,появитсяАналогичные проблемы с производительностью при большом количестве подключений к базе данных.
несмотря надаОткрыт новый бизнесСцена все ещедастадия регресса,В ходе ежедневного стресс-тестирования в тестируемых приложениях могут возникать аномалии.,Однако при реализации традиционных методов тестирования практически не существует инструментов анализа аномальных данных.,Решение об исключении основано только на частоте сбоев и коде состояния HTTP.,Если вам необходимо узнать подробности исключения, необходимо вмешаться разработчику. При этом из-за отсутствия аномальной информации некоторые сцены невозможно воспроизвести.,Разработчикам также сложно быстро найти,Инженерам по тестированию и инженерам-разработчикам необходимо много общаться,Влияет на процесс настройки теста производительности и на ход теста производительности.
Таким образом, аномальный анализ и аномальное сохранение полевых данных также являются двумя важными возможностями. Обычный анализ в основном включает в себя различные исключения, возникающие во время выполнения кода.,как обычноИсключение нулевого указателя、Исключение выхода за пределы массива, исключение, связанное с базой данныхждать。Эти аномалии приведут к значительному снижению вероятности успеха во время реального стресс-тестирования.,Такие проблемы необходимо обнаруживать и решать как можно скорее.,Сохранение данных об исключениях, а затем внимание к типу исключения.,Код исключения、Используйте рамки。ПринадлежностьПриложение, протокол запроса, имя потока, стек потокаждатьинформация,Инженеры-испытатели могут использовать платформу анализа, чтобы максимально сохранить аномальный участок.,Оставьте это инженеру-разработчикуАнализируйте и исправляйте。
Анализ журналов в настоящее время является широко используемым методом.,Когда возникает исключение,Инженер по тестированию также войдет на сервер, на котором находится тестируемое приложение.,время прохождения,Такая информация, как протестированный интерфейс, анализируется в массивных журналах.,Эффективность устранения неполадок низкая. Из-за большого объёма логов,Даже если вы фильтруете по периоду времени стресс-теста,Есть еще много данных,Инженер по тестированию не может точно определить, создается ли выходной журнал в рамках этого сценария стресс-теста.,Это также может быть ошибка журнала, вызванная другими неправильными операциями.。Таким образом, на основе ссылок Анализ Также появилась функция журналов.
упоминалось ранее,Анализ ссылок реализован на основе технологии зондирования и улучшения байт-кода.,Возможность использования общих компонентовВыполнение динамического инструментария。существовать Анализ журналовсцена,Зонды будут инструментировать общие системы ведения журналов.,отисуществовать Когда возникает ошибка в кодеАвтоматически получать соответствующие выходные данные журнала,отображается на платформе. Это имеет следующие два преимущества:
Вы можете проверить оба на одной платформеПосмотрите на данные на уровне ссылок и кода.,Также могу выполнить анализ журналов.,Два больших данных дополняют друг друга,Позволяет быстрее находить узкие места в производительности.
ОсуществленныйПривязка запросов и логов,Журналы, созданные каждым запросом, будут отображаться независимо.,Уменьшите количество вводящей в заблуждение информации, вызванной другими запросами。
Если вы что-то приобретете после прочтения, ваше внимание, лайки, пересылки, комментарии и т. д. - моя самая большая поддержка! ! !