#LaravelPolandMeetup #22
Laravel Poland MeetUp #22 online
Temat: Jak przyspieszyłem aplikację produkcyjną o ponad 40%
Autor: Patryk Filipiak
Czy #PHP może być szybki? Jak stworzyć kod, który sprawi, że #aplikacja będzie szybka? Jak mierzyć wydajność tworzonej aplikacji?
3. O mnie
● Ulubiona technologia: Laravel ❤
● Buduję projekty po godzinach
● Tworzę aplikację do zautomatyzowania tradingu
● Uprawiam dużo sportu
● Pierwsze publiczne wystąpienie
4. Czynniki wpływające na szybkość aplikacji
● zasoby serwerowe
● obciążenie peaki
● złożoność wykonywanych operacji
● requesty zewnętrzne
● baza danych
● wybrane technologie do napisania projektu
● ataki hackerskie
5. Czy PHP jest szybki?
To zależy
● Zbyt wolny na wykonywanie skomplikowanych
algorytmów
● Słaby do dużej ilości danych
● Pozwala szybko stworzyć prototyp
● Optymalny do serwowania zawartości stron www
15. Jak robić testy wydajnościowe?
Zmierzenie czasu wykonywania funkcji w PHP
$startTime = microtime(true);
myFunction($args);
$finishTime = microtime(true);
echo 'Total execution time: ' . ($finishTime - $startTime);
16. Jak robić testy wydajnościowe?
Apache Benchmark
sudo apt-get update
sudo apt-get install apache2-utils
ab -n 200 -c 10 https://github.com/
n - ilość req w teście
c - liczba req jednocześnie
33. Podsumowanie testów
1. MIX 4.771s
2. Cache::remember 4.940s
3. Composer Optimize 5.053s
4. Artisan Cache 5.256s
5. Test Podstawowy 5.304s
6. N+1 9.232s
Test testowi nigdy nie będzie równy
34. Inne metody na przyspieszenie projektu - hard
● Usunięcie niepotrzebnych paczek z composer.json
● Aktualizacja używanych paczek do najnowszych wersji
● Aktualizacja PHP
● Usunięcie martwego kodu
● Optymalizacja zapytań SQL
● Uproszczenie/Refaktoryzacja poszczególnych funkcjonalności
● Wydzielenie kodu do mikroserwisów (wybór innych technologii)
● Ochrona przed DDos np. nginx throttling