Profiling на PHP приложения с инструментите на Facebook Xhprof и Xhgui – част 2 Във втората част на този материал се спираме върху използването на тестов Apache уеб сървър с PHP. Нели Тодорова Software Development Manager - LAMP, MentorMate В първата част на статията се запознахме с това какво представлява profiling-ът, както и направихме всички необходими настройки, за да могат да се ползват инструментите Xhprof и Xhgui. След като вече имаме настроен виртуален хост, зареждайки го виждаме следният екран, където са отбелязани всички страници, участвали в замерването: За всички тестови засичания е използван тестов 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) След като вече има направени записи в базата, може да се разгледат и детайлите на всяка страница. За целта се избира линкът зад датата: Показаната страница с детайли визуализира систематазирана информация за отделните характеристики, както и информацията записана в GET и POST масивите. Сравняване на профили Едни от най-полезните и интересни компоненти на Xhgui е възможността да се сравняват два различни записа. Това е изключително ценно когато се прави замерване, след това промяна и последващо засичане. В този случай реално може да се анализира разликата в цифрите и дали направената промяна е оказала влияние. За да се направи тoва е необходимо да се избере опцията в горният десен ъгъл – “Compare this run”. Ще се изведе нов екран, от където ще има възможност да се избере стрaницата, с която ще се сравнява: На последващия изведен екран, в най-горната част се вижда обобщената информация. Полезни тук са цифрите свързани с броя на извикванията на функциите “Number of function calls”, както и “Inclusive Wall Time” процентната разлика: Разликата на екрана на “Inclusive Wall Time” показва времето на зареждане на втората страница спрямо първата, което е 212%. Това означава, че второто зареждане е в пъти по-бавно от първоначалното. На втората част от екрана са показани детайлните разбивки на всяка една заредена функция: Там, където няма разлика между двете, изведената цифра е 0. Ако цифрата е отрицателна, оцветена в зелено, това означава, че при второто зареждане на страницата, тя е отнела по-малко ресурси – памет, процесорно време и т.н. Ако цифрата е червена, това означава обратното – че е отнела с толкова единици повече ресурси. Графики Обобщените графики за дадена страница могат да се видят чрез избиране на линка зад името и на началния екран. В пъвата част са показани две графики, сравняващи процесорното време и използваната памет. Тази информация е полезна, тъй като може да се проследи на коя дата е възникнало някакво драстично разместване и да се проследи дали някоя определена промяна в кода не е довела до тези резултати. Наличен е и бутон “Search” в долната част на екрана. Чрез тази опция могат да се правят сравнения на база на последните 30 минути, 1 час, 2, 12, 24 часа, 1, 2 седмици или 30 дни. Наблюдавани функции Друга интересна секция е тази използвана за замерване на бързодействието на отделна функция или група от функции в приложението. Ползволява използването и на регулярни изрази. На следващия екран е показан пример за това как може да се настрои да се наблюдават всички array функции: Заключение Инструментите Xhprof и Xhgui са полезни на всеки един разработчик, който желае да повлияе на бързодействието на своята система, тъй като дават възможност да се правят засичания на вътрешните ресурси, както и необходимите анализи за откриване на проблеми. В комбинация с “benchmark” тестове, те могат да допринесат за подобряване на цялостното качество и състояние на системата. Tags Междуплатформен софтуерСофтуерни разработкиУеб Сподели Facebook LinkedIn Twitter Сподели Facebook LinkedIn Twitter Запишете се за нашия бюлетин Запишете се за нашия бюлетин