Към съдържанието
  • За нас
  • Отдели
    • .NET
    • Java
    • LAMP & Front-end
    • Cloud
    • Mobile
    • Quality Assurance
    • Continuation Engineering
    • Business Analysis
    • Project Management
    • Data & Analytics
    • Design
  • Проекти
  • Кариери
  • Публикации
  • Контакти
  • Devcamp
  • US
  • SE
  • БГ
Menu

Profiling на PHP приложения с инструментите на Facebook Xhprof и Xhgui – част 2

Във втората част на този материал се спираме върху използването на тестов Apache уеб сървър с PHP.

Neli Todorova profilepicture

Нели Тодорова

Software Development Manager - LAMP, MentorMate

В първата част на статията се запознахме с това какво представлява profiling-ът, както и направихме всички необходими настройки, за да могат да се ползват инструментите Xhprof и Xhgui.

След като вече имаме настроен виртуален хост, зареждайки го виждаме следният екран, където са отбелязани всички страници, участвали в замерването:

recent runs

За всички тестови засичания е използван тестов Apache уеб сървър и приложение, разработено с помощта на PHP.

Най-горното меню се състои от следните секции:

  • Recent — последните заредени страници;
  • Longest wall time — изглед на най-бавно зареждащите се страници на база на реалното (wall) clock време;
  • Most CPU — подредба по използващите най-много ресурси от процесора;
  • Most Memory — подредба по използващите най-много памет;
  • Custom View — изпращане на заявки към MongoDB базата от данни;
  • Watch Functions — набор от функции, чиито характеристики ще бъдат включени в списъка;
  • Waterfall — визуален изглед под формата на водопад на взаимодействащи си заявки.

За да можем да анализираме получените резултати е добре да изясним необходимите понятия:

  • Call Count – колко пъти дадена функция е извикана;
  • Wall Time (wt) – колко време е отнело на дадена функция да се изпълни;
  • CPU Usage/CPU Time (cpu) – колко време е отнело на процесора да изпълни дадена функция;
  • Memory Usage (mu) – колко памет е заела функцията;
  • Peak Memory Usage (pmu) – най-високата стойност на заетата памет от функцията.

Изследване на примерна страница (/home/profile)

След като вече има направени записи в базата, може да се разгледат и детайлите на всяка страница. За целта се избира линкът зад датата:

/home/profile

Показаната страница с детайли визуализира систематазирана информация за отделните характеристики, както и информацията записана в GET и POST масивите.

profile data for GET /home/profile

Сравняване на профили

Едни от най-полезните и интересни компоненти на Xhgui е възможността да се сравняват два различни записа. Това е изключително ценно когато се прави замерване, след това промяна и последващо засичане. В този случай реално може да се анализира разликата в цифрите и дали направената промяна е оказала влияние.

За да се направи тoва е необходимо да се избере опцията в горният десен ъгъл – “Compare this run”. Ще се изведе нов екран, от където ще има възможност да се избере стрaницата, с която ще се сравнява:

compare runs for /home/profile

На последващия изведен екран, в най-горната част се вижда обобщената информация.
Полезни тук са цифрите свързани с броя на извикванията на функциите “Number of function calls”, както и “Inclusive Wall Time” процентната разлика:

compare runs for /home/profile2

Разликата на екрана на “Inclusive Wall Time” показва времето на зареждане на втората страница спрямо първата, което е 212%. Това означава, че второто зареждане е в пъти по-бавно от първоначалното.

На втората част от екрана са показани детайлните разбивки на всяка една заредена функция:

Details

Там, където няма разлика между двете, изведената цифра е 0. Ако цифрата е отрицателна, оцветена в зелено, това означава, че при второто зареждане на страницата, тя е отнела по-малко ресурси – памет, процесорно време и т.н. Ако цифрата е червена, това означава обратното – че е отнела с толкова единици повече ресурси.

Графики

Обобщените графики за дадена страница могат да се видят чрез избиране на линка зад името и на началния екран.

В пъвата част са показани две графики, сравняващи процесорното време и използваната памет. Тази информация е полезна, тъй като може да се проследи на коя дата е възникнало някакво драстично разместване и да се проследи дали някоя определена промяна в кода не е довела до тези резултати.

simplified

Наличен е и бутон “Search” в долната част на екрана. Чрез тази опция могат да се правят сравнения на база на последните 30 минути, 1 час, 2, 12, 24 часа, 1, 2 седмици или 30 дни.

Наблюдавани функции

Друга интересна секция е тази използвана за замерване на бързодействието на отделна функция или група от функции в приложението. Ползволява използването и на регулярни изрази.
На следващия екран е показан пример за това как може да се настрои да се наблюдават всички array функции:

watch functions

Заключение

Инструментите Xhprof и Xhgui са полезни на всеки един разработчик, който желае да повлияе на бързодействието на своята система, тъй като дават възможност да се правят засичания на вътрешните ресурси, както и необходимите анализи за откриване на проблеми. В комбинация с “benchmark” тестове, те могат да допринесат за подобряване на цялостното качество и състояние на системата.

Tags
  • Междуплатформен софтуер
  • Софтуерни разработки
  • Уеб
Сподели
  • Facebook
  • LinkedIn
  • Twitter
Сподели
  • Facebook
  • LinkedIn
  • Twitter
Запишете се за нашия бюлетин
Запишете се за нашия бюлетин

Препоръчани публикации

Блог пост
Flutter 3.0: What’s New & What You Need to Know
Блог пост
Digital Transformation in Manufacturing
България
67 Prof. Tsvetan Lazarov Blvd.
Sofia 1592, Bulgaria,
+359 2 862 2632
United States
MentorMate1350 Lagoon Ave, Suite 800,
Minneapolis
, MN 55408

+1 612 823 4000
Sweden
Drottninggatan 29
411 14 Göteborg

+46 3 199 0180
Последвайте ни
  • Twitter
  • LinkedIn
  • Instagram
  • Facebook

Copyright © 2022 MentorMate, Inc.

  • Партньорска мрежа
  • Политика за бисквитки
  • Политика за защита на личните данни