Моите Топ ПЕТ най-добрите епични скинове за кросоувър в Brawlhalla! • 1v1 геймплей

На малко слаб сървър, той понякога бива ударен от много роботи, пълзящи едновременно. Докато едно решение е да се погледне да се хвърли повече процесорна мощ към уеб сървъра, той подчерта, че някои от скриптовете са по-малко от чудесно оптимизирани.

Това, което бих искал да мога да направя, е да изчислим времето на процесора на база на заявка и да се съсредоточим върху оправянето на тези първи. Има ли нещо, вградено в Apache или PHP, което би могло да помогне за постигането на това? Предполагам, че MySQL ще има свои собствени показатели, които биха идентифицирали и най-интензивните сървърни заявки?

Можете също така да направите PHP профилиране, като използвате някой от редица профилатори. Моят предпочитан е XDebug:

http://www.xdebug.org/docs/profiler

Не изисква да променяте някой от вашите скриптове.

Това трябва бързо да посочи тесните места; Също така ще помогне с частта MySQL. Въпреки че MySQL има собствено отчитане, може да сте в ситуация, при която скриптът прави една и съща (бърза) заявка 1000 пъти последователно. MySQL не би съобщил това, но ще забележите от XDebug, че функция е била извикана толкова пъти само за една страница.

Можете да направите първоначално проучване на Dev сървър; всички проблеми с оптимизацията ще се покажат бързо. От вашите производствени дневници разберете кои са най-посещаваните страници и ги анализирайте първо на dev сървъра.

Ако все пак трябва да направите профилиране на производствения сървър, помислете дали да не го активирате на случаен принцип за подмножество от заявки, за да сведете до минимум натоварването. От документите:

Можете също така да активирате селективно профилиращата програма с настройката xdebug.profiler_enable_trigger, зададена на 1. Ако е зададена на 1, тогава можете да активирате профилиращата програма, като използвате променлива GET / POST или COOKIE на името XDEBUG_PROFILE

Apache mod_rewrite ще помогне за прозрачно добавяне на променливата GET, без тя да бъде предадена на / от потребителя.

Има няколко възможни начина да направите това - кой от начините ще бъде най-добрият, в крайна сметка зависи от това колко време и усилия сте готови да отделите за решение.

Бенчмаркинг на PHP: Като цяло е необходимо много време / усилия, ако вашият код вече не включва бенчмаркинг. Добавете фрагмент от код, за да зададете таймери за време и микровреме в началото на всеки скрипт и регистрирайте общото време и микровреме, изминали в края на скрипта (заедно с URI, който е извикан). Можете да добавите допълнителни таймери за сравнителен анализ за конкретни функции, ако може да се наложи да рефакторирате кода си по-късно (просто не забравяйте да изчакате, докато след всички редовни операции са приключили, за да запишете данните си за сравнение - в противен случай ще се намесите в информацията за сравнение).

wget Бенчмаркинг: Вероятно най-мързеливият начин за сравнение. Вземете списък на заявените URI от регистрационните файлове на вашия уеб сървър и ги подайте в wget като локални заявки срещу уеб сървъра (в идеалния случай бихте направили това няколко пъти, докато трафикът е много нисък, за да получите представителни резултати)

е работил за вас: Charles Robertson | Искате ли да се свържете с нас?