Professional Documents
Culture Documents
Phpcon 2022 PHP PM
Phpcon 2022 PHP PM
2/ Wydajność rozwiązań
Agenda 5/ Podsumowanie
Jak aplikacje procesują requesty
01/
unitygroup.com
4
Application Thread
Application Thread
unitygroup.com
5
> mod_php vs php-fpm
mod_php php-fpm
▪ Moduł do serwera WWW Apache2 ▪ Dodatkowa aplikacja którą można podłączyć do Apache2,
nginx lub innego serwera WWW
unitygroup.com
6
> mod_php vs php-fpm
mod_php php-fpm
/vhost1
/vhost /vhost2
/vhost3
unitygroup.com
7
> mod_php vs php-fpm
mod_php php-fpm
/vhost1 /vhost1
/vhost2 /vhost2
/vhost3 /vhost3
unitygroup.com
8
> mod_php vs php-fpm
mod_php php-fpm
/vhost1 /vhost1
/vhost2 /vhost2
/vhost3 /vhost3
unitygroup.com
9
> mod_php vs php-fpm
mod_php php-fpm
unitygroup.com
10
> mod_php vs php-fpm
mod_php php-fpm
▪ Moduł do serwera WWW Apache2 ▪ Dodatkowa aplikacja którą można podłączyć do Apache2,
nginx lub innego serwera WWW
▪ Popularny do prostych i dedykowanych zastosowań ▪ Popularny na hostingach współdzielonych
▪ Brak domyślnej separacji vhostów ▪ Wbudowana obsługa pooli zapewniających separację
▪ Aktywowany dla każdego requestu ▪ Może obsługiwać tylko requesty do PHP
unitygroup.com
11
> mod_php vs php-fpm
mod_php php-fpm
▪ Moduł do serwera WWW Apache2 ▪ Dodatkowa aplikacja którą można podłączyć do Apache2,
nginx lub innego serwera WWW
▪ Popularny do prostych i dedykowanych zastosowań ▪ Popularny na hostingach współdzielonych
▪ Brak domyślnej separacji vhostów ▪ Wbudowana obsługa pooli zapewniających separację
▪ Aktywowany dla każdego requestu ▪ Może obsługiwać tylko requesty do PHP
▪ https://github.com/lpiob/php-serving-benchmarks
unitygroup.com
14
> Benchmark: środowisko testowe
▪ https://github.com/lpiob/php-serving-benchmarks
unitygroup.com
15
> Benchmark: przebieg i wyniki pośrednich testów
▪ Omówienie na podstawie
https://github.com/lpiob/php-serving-benchmarks/tree/master/test-results
▪ Pliki 001-007
Key takeaways:
▪ Zmiana połączenia TCP na socket nie miała zmierzalnego wpływu na wydajność
▪ Największy zysk wydajnościowy po zmianie domyślnego process managera w FPM.
unitygroup.com
16
> Benchmark: wyniki
unitygroup.com
17
> Benchmark: wyniki
Sposób serwowania Requests per second
apache2 + mod_php 400.10
apache2 + php-fpm 413.06
nginx + php-fpm 420.84
600
500
400
300
200
100
0
5t 10t 16t 24t 32t
apache2 + mod_php nginx + fpm apache2 + fpm
unitygroup.com
18
Jak to jest robione w innych
językach? 03/
unitygroup.com
20
Application Thread
Application Thread
unitygroup.com
21
Application Thread
Application Thread
Application Thread
Application Thread
unitygroup.com
22
Jak procesować ruch jeszcze
szybciej? 04/
> php-pm
unitygroup.com
24
Application Thread
Application Thread
Application Thread
Application Thread
unitygroup.com
25
> Benchmark: wyniki
Sposób serwowania Requests per second
apache2 + mod_php 400.10
apache2 + php-fpm 413.06
nginx + php-fpm 420.84
600
500
400
300
200
100
0
5t 10t 16t 24t 32t
apache2 + mod_php nginx + fpm apache2 + fpm
unitygroup.com
26
> Benchmark: wyniki
Sposób serwowania Requests per second
apache2 + mod_php 400.10
apache2 + php-fpm 413.06
nginx + php-fpm 420.84
nginx + php-pm 5061
6000
5000
4000
3000
2000
1000
0
5t 10t 16t 24t 32t
apache2 + mod_php apache2 + fpm nginx + fpm nginx + php-pm
unitygroup.com
27
Podsumowanie
05/
https://github.com/lpiob/php-serving-benchmarks
Thank You
unitygroup.com