Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Skalowanie aplikacji PHP
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Leszek Krupiński
September 27, 2014
Programming
440
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Skalowanie aplikacji PHP
Leszek Krupiński
September 27, 2014
More Decks by Leszek Krupiński
See All by Leszek Krupiński
So that the daemon won’t die
leafnode
2
410
Practical PHP7
leafnode
2
500
Dobrze posól swoje hasło
leafnode
0
120
Dobrze posól swoje hasło (z notatkami)
leafnode
0
110
PHPNG kontra HHVM
leafnode
0
130
PHPNG kontra HHVM (z notatkami)
leafnode
0
86
Ewolucja PHP: PHP 5.6, NG, PHP 7, HHVM
leafnode
2
310
Sculpin - Generowanie statycznych stron w PHP
leafnode
2
79
Varnish to the Rescue
leafnode
0
140
Other Decks in Programming
See All in Programming
属人化した知識を、 AIが辿れる地図にする
pkshadeck
PRO
1
170
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
470
Go言語とトイモデルで学ぶTransformerの気持ち / fukuokago23-transformer
monochromegane
0
170
夏だ!祭りだ!祭りとはドメインモデリングでは?
ryugen04
0
280
そこに3びきプロダクトがいるじゃろう——生成AI時代における“価値が届かない理由”の構造
kosuket
0
480
PHP に部分適用が来るぞ!……ところで何それ?おいしいの? #phpcon / phpcon-2026
shogogg
0
660
AIが無かった頃の素敵な出会いの話
codmoninc
1
430
<title><a id="</title>君はこのHTMLをパースできるか"></a></title> #雑LT_study
pizzacat83
0
140
jsmini JavaScript Engine を作ってみた話
yosuke_furukawa
PRO
0
320
Jindong: Introducing Declarative Haptics in Compose Multiplatform
l2hyunwoo
0
120
変わらないものが、変わるものを決める — 意図駆動開発 × イベントソーシング × イミュータブル | What Doesn't Change Decides What Can — IDD × Event Sourcing × Immutability
tomohisa
0
1.7k
人間の目はかわらない、だからJPEGは30年もつ
yuzneri
12
18k
Featured
See All Featured
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
New Earth Scene 8
popppiees
3
2.5k
Building AI with AI
inesmontani
PRO
1
1.1k
Building Applications with DynamoDB
mza
96
7.2k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.7k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
940
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
480
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
650
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
460
Transcript
SKALOWANIE APLIKACJI PHP Leszek Krupiński, PHPCon 2014
LEAFNODE
CO TO JEST SKALOWALNOŚĆ?
— WIKIPEDIA Skalowalność (ang. scalability) - zapewnienie coraz wydajniejszej pracy
w miarę zwiększania liczby elementów składowych.
SKALOWANIE WERTYKALNE
SKALOWANIE HORYZONTALNE
PO CO DBAĆ O SKALOWALNOŚĆ?
ZADOWOLENIE KLIENTA
bit.ly/slowwebspeed
None
None
JAKIE SĄ KRYTYCZNE WARTOŚCI?
None
None
WYMIERNE KORZYŚCI
15,4% WIĘCEJ POBRAŃ FIREFOKSA PO PRZYSPIESZENIU STRONY MOZILLI O 2,2s
14% WIĘCEJ WPŁAT NA KAMPANIĘ BARACKA OBAMY PO PRZYSPIESZENIU STRONY
ZGŁOSZENIOWEJ O 60%
WYLICZENIA WALMARTU I AMAZONU: ZYSKI WIĘKSZE O 1% ZA KAŻDE
100ms
WYLICZENIA YAHOO: 9% WIĘCEJ RUCHU W SERWISIE ZA KAŻDE 400ms
PODSTAWY
HTTP REQUEST
None
None
None
SKOCZĘ JESZCZE PO WARZYWA
CO MOŻNA ZROBIĆ?
• SZYBSZA OBSŁUGA KLIENTA • WIĘCEJ KAS • KOLEJNE SKLEPY
KUPMY WIĘKSZY SERWER
KUPMY WIĘCEJ SERWERÓW
BEZ ODPOWIEDNIEJ ARCHITEKTURY NIE MA TO SENSU
BYĆ MOŻE WYSTARCZY OPTYALIZACJA APLIKACJI
WYCIŚNIĘCIE MAKSIMUM Z MOŻLIWOŚCI MASZYNY
OPTYMALIZUJ ISTOTNE FRAGMENTY KODU
— Donald Knuth Premature optimization is the root of all
evil.
UPEWNIJ SIĘ, ŻE TO NA PEWNO PHP JEST WINNE
NARZĘDZIA
xdebug + cachegrind
None
XHProf
None
New Relic
NEWRELIC POKAŻE KTÓRE KOMPONENTY DOMINUJĄ OBCIĄŻENIE
METRYKI
None
STATSD
None
MIN, MAX, 90th, COUNT, MEAN
GRAPHITE
None
None
ANALIZA LOGÓW: LOGSTASH, GRAYLOG2
PHP
ZAKTUALIZUJ PHP
STANDARD NA 2014: NGINX + PHP-FPM
NGINX: SZYBKOŚĆ, ELASTYCZNOŚĆ
PHP-FPM: ROZDZIELENIE PROCESÓW
WŁĄCZ OPCODE CACHE
ZOPTYMALIZUJ FRAMEWORK
WŁĄCZ CACHE
WYŁĄCZ AUTOGENEROWANIE
WYŁĄCZ ZBĘDNE MODUŁY
OPTYMALIZACJA BAZY DANYCH
GŁÓWNA PRZYCZYNA PROBLEMÓW Z WYDAJNOŚCIĄ
SLOW LOG? PERCONA TOOLKIT
INDEKSY QUERY CACHE ALTERNATYWNE SILNIKI
NOSQL
ARCHITEKTURA
None
DOBIERZ KOMPONENTY
FULL TEXT SEARCH? SPHINX.
STRUKTURY DANYCH? REDIS.
BUFORUJ DANE
•WYNIKI ZAPYTAŃ •ODPOWIEDZI API •KONFIGURACJA •GENEROWANE DANE
NAJCZĘŚCIEJ UŻYWANE: W PAMIĘCI
MEMCACHE
MOŻLIWOŚĆ WYDZIELENIA WSPÓŁDZIELONEGO SERWERA MEMCACHE
VARNISH
NAGŁÓWKI HTTP bit.ly/httpcache
MAX AGE LAST MODIFIED ETAG
ROZDZIEL SKŁADNIKI
! ARCHITEKTURA HEKSAGONALNA
None
PRZETWARZAJ ASYNCHRONICZNIE
GDZIEŚ TU UŻYTKOWNIK KLIKA “RELOAD”
Aplikacja Kolejka
Nowa%piosenka Rekodowanie C++ MusicShare Generowanie%skrótu% piosenki C++ Web%Service Java Jabber
erlang Statyczny%HTML PHP DECOUPLING
LOAD BALANCING Front&end RabbitMQ Consumer
! POZA JEDEN SERWER
LOAD BALANCER
VARNISH HAPROXY NGINX
PROBLEMY
! DANE WSPÓŁDZIELONE
SESJE
! PERSISTENT LOAD BALANCER
! WSPÓLNY MEMCACHE
INNE DANE
! PLIKI STATYCZNE
! WSPÓLDZIELONY SYSTEM PLIKÓW
API
ARCHITEKTURA DLA BAZ DANYCH
REPLIKACJA MASTER-SLAVE
SHARDING
None
None
None
PROBLEMY
RESHARDING
JOIN
NA KONIEC
NIE OPTYMALIZUJ PRZEDWCZEŚNIE
BUDUJ ARCHITEKTURĘ PERSPETYWICZNIE
OPTYMALIZUJ STOSOWNIE DO SKALI
BĄDŹ ZEN
ŻYCZĘ WSZYSTKIM TAKICH PROBLEMÓW :-)
https://joind.in/11839 @leafnode
PYTANIA?
DZIĘKUJĘ ZA UWAGĘ Title image credits: https://www.flickr.com/photos/torkildr/3462607995/