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
Leszek Krupiński
September 27, 2014
Programming
1
400
Skalowanie aplikacji PHP
Leszek Krupiński
September 27, 2014
Tweet
Share
More Decks by Leszek Krupiński
See All by Leszek Krupiński
So that the daemon won’t die
leafnode
2
390
Practical PHP7
leafnode
2
450
Dobrze posól swoje hasło
leafnode
0
97
Dobrze posól swoje hasło (z notatkami)
leafnode
0
86
PHPNG kontra HHVM
leafnode
0
95
PHPNG kontra HHVM (z notatkami)
leafnode
0
59
Ewolucja PHP: PHP 5.6, NG, PHP 7, HHVM
leafnode
2
290
Sculpin - Generowanie statycznych stron w PHP
leafnode
2
54
Varnish to the Rescue
leafnode
0
120
Other Decks in Programming
See All in Programming
Result型で“失敗”を型にするPHPコードの書き方
kajitack
5
930
Python型ヒント完全ガイド 初心者でも分かる、現代的で実践的な使い方
mickey_kubo
1
130
すべてのコンテキストを、 ユーザー価値に変える
applism118
3
1.4k
Advanced Micro Frontends: Multi Version/ Framework Scenarios @WAD 2025, Berlin
manfredsteyer
PRO
0
280
AIともっと楽するE2Eテスト
myohei
7
2.8k
おやつのお供はお決まりですか?@WWDC25 Recap -Japan-\(region).swift
shingangan
0
140
코딩 에이전트 체크리스트: Claude Code ver.
nacyot
0
670
初学者でも今すぐできる、Claude Codeの生産性を10倍上げるTips
s4yuba
16
12k
状態遷移図を書こう / Sequence Chart vs State Diagram
orgachem
PRO
1
130
AI時代のソフトウェア開発を考える(2025/07版) / Agentic Software Engineering Findy 2025-07 Edition
twada
PRO
92
31k
Flutterで備える!Accessibility Nutrition Labels完全ガイド
yuukiw00w
0
170
PHPで始める振る舞い駆動開発(Behaviour-Driven Development)
ohmori_yusuke
2
400
Featured
See All Featured
Making Projects Easy
brettharned
116
6.3k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Why You Should Never Use an ORM
jnunemaker
PRO
58
9.4k
Mobile First: as difficult as doing things right
swwweet
223
9.7k
For a Future-Friendly Web
brad_frost
179
9.8k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
46
9.6k
Designing for humans not robots
tammielis
253
25k
Building an army of robots
kneath
306
45k
Embracing the Ebb and Flow
colly
86
4.7k
Site-Speed That Sticks
csswizardry
10
690
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/