scalability performance on_php
DESCRIPTION
PHP de olceklenebilirlik ve performansTRANSCRIPT
![Page 1: Scalability performance on_php](https://reader033.vdocuments.mx/reader033/viewer/2022052522/554f774db4c9052a518b480c/html5/thumbnails/1.jpg)
PHP ölçeklenebİlİrlİk
Mustafa İlerİ
EkİM'12 - Özgür web günlerİ
Ve Performans
![Page 2: Scalability performance on_php](https://reader033.vdocuments.mx/reader033/viewer/2022052522/554f774db4c9052a518b480c/html5/thumbnails/2.jpg)
PHP hızlandırıcılarPHP hızlandırıcılar
Önbellekleme SİstemlerİÖnbellekleme Sİstemlerİ
arama motorlarıarama motorları
MESAJ KUYRUK SİSTEMLERİMESAJ KUYRUK SİSTEMLERİ
Yatay ve dİkey ÖlçeklemeYatay ve dİkey Ölçekleme
SORULARSORULAR
Temel performans problemlerİTemel performans problemlerİ
Web hızlandırıcılarWeb hızlandırıcılar
Yük DENGELEYİCİLER ( load balancer )Yük DENGELEYİCİLER ( load balancer )
![Page 3: Scalability performance on_php](https://reader033.vdocuments.mx/reader033/viewer/2022052522/554f774db4c9052a518b480c/html5/thumbnails/3.jpg)
Yatay ve dİkey ölçekleme
DİKEY ÖLÇEKLENEBİLİRLİKTEK BİR MAKİNE İÇİN KAYNAKLARI ARTTIRARAK SİSTEMİN İŞLEM HACMİNİ ARTTIRABİLMEKTİR.
YATAY ÖLÇEKLENEBİLİRLİKYATAY ÖLÇEKLENEBİLİRLİKBİR SİSTEMİN İŞLEM HACMİNİ ARTTIRABİLMEK BİR SİSTEMİN İŞLEM HACMİNİ ARTTIRABİLMEK
İÇİN TEK MAKİNEDEKİ YÜKÜ DÜZGÜN OLARAK İÇİN TEK MAKİNEDEKİ YÜKÜ DÜZGÜN OLARAK BİRDEN FAZLA MAKİNEYE VE DÜĞÜME BİRDEN FAZLA MAKİNEYE VE DÜĞÜME
YAYABİLMEKTİR.YAYABİLMEKTİR.
Ölçeklenebİlİrlİk Bİr sİSTEMİN artan bİLGİ İşlem hacmİNİN kolayca yönetİlebİlme ve genİşletİlebİlme yeteneğİdİr.Bİr sİSTEMİN artan bİLGİ İşlem hacmİNİN kolayca yönetİlebİlme ve genİşletİlebİlme yeteneğİdİr.
![Page 4: Scalability performance on_php](https://reader033.vdocuments.mx/reader033/viewer/2022052522/554f774db4c9052a518b480c/html5/thumbnails/4.jpg)
YATAY VE DİKEY ÖLÇEKLEMEyatay ÖLÇEKLENEBİLİRLİK
DİKEY ÖLÇEKLENEBİLİRLİKSİ
STEM
İN C
EVAP
VER
ME S
ÜRES
İ
SİSTEM YÜKÜ
![Page 5: Scalability performance on_php](https://reader033.vdocuments.mx/reader033/viewer/2022052522/554f774db4c9052a518b480c/html5/thumbnails/5.jpg)
PERFORMANS VE ÖLÇEKLENDİRME
ÖlçeklenebİLİRLİK != PERFORMANS
PERFORMANS PROBLEMİ: BİR SİSTEM, TEK KULLANICI İLE YAVAŞ ÇALIŞIYORSABU BİR PERFORMANS PROBLEMİDİR.
ÖLÇEKLENEBİLİRLİK PROBLEMİ: BİR SİSTEM, ÜZERİNDEKİ YÜK ARTTIĞI ZAMAN YAVAŞ ÇALIŞIYORSA BU BİR ÖLÇEKLENEBİLİRLİK PROBLEMİDİR.
ÖlçeklenebİLİRLİK > PERFORMANSTEMEL SORUN KAYNAK YÖNETİMİ
![Page 6: Scalability performance on_php](https://reader033.vdocuments.mx/reader033/viewer/2022052522/554f774db4c9052a518b480c/html5/thumbnails/6.jpg)
Temel performans problemlerİ
Gereksİz network trafİğİDİsk İşlemlerİVerİtabanına gereksİz yapılaN sorgularSİstemde süreklİ çalışan scrİptlerKötü Kod
![Page 7: Scalability performance on_php](https://reader033.vdocuments.mx/reader033/viewer/2022052522/554f774db4c9052a518b480c/html5/thumbnails/7.jpg)
Yük DENGELEYİCİLER
http://en.wikipedia.org/wiki/Load_balancing_(computing)
YÜK DENGELEMEBİR NETWORK TERMİNOLOJİSİDİR. BASİT OLARAK İŞ YÜKÜNÜ BİRDEN FAZLA BİLGİSAYARA DÜZGÜN OLARAK PAYLAŞTIRMAKTIR. DONANIMSAL VEYA YAZILIMSAL OLARAK YAPILABİLİR.
NEDEN ?DİKEY ÖLÇEKLEME BELİRLİ BİR YERDEN SONRA ÇOK SIKINTILI OLUR ( MALİYET VE PERFORMANS )SİSTEMİN HATA TOLERANSINI ARTTIRMAK.
![Page 8: Scalability performance on_php](https://reader033.vdocuments.mx/reader033/viewer/2022052522/554f774db4c9052a518b480c/html5/thumbnails/8.jpg)
Yük dengeleyİCİLER
![Page 9: Scalability performance on_php](https://reader033.vdocuments.mx/reader033/viewer/2022052522/554f774db4c9052a518b480c/html5/thumbnails/9.jpg)
WEB HIZLANDIRICILAR
WEB HIZLANDIRICILARWEB SİTELERİNE ERİŞİM ZAMANINI AZALTAN, DOĞAL OLARAK KAYNAK TÜKETİMİNİ DİREKt ETKİLEYEBİLEN SİSTEMLERDİR.
SUNUCU SEVİYESİNDE BELLEKLEME YAPAR, DOSYALAR İÇİN SIKIŞTIRMA YAPAR...http://en.wikipedia.org/wiki/Web_accelerator
AlternatİflerVarnISH
NGINXSQUID
NEDEN ?I/O AZALTMAKİŞLEMCİ YÜKÜNÜ AZALTMAK
![Page 10: Scalability performance on_php](https://reader033.vdocuments.mx/reader033/viewer/2022052522/554f774db4c9052a518b480c/html5/thumbnails/10.jpg)
PHP hizlandiricilar
PHP HIZLANDIRICILAR:PHP İLE YAZILMIŞ UYGULAMALARIN PERFORMANSINI İYİLEŞTİRMEYİ AMAÇLAYAN PHP EKLENTİLERİDİR.
ALTERNATİF PHP HIZLANDIRICILAR:Alternative PHP Cache (APC)
ionCube PHP AcceleratorNusphere PhpExpress
Zend Optimizer+Turck MMCacheeAccelerator
XCache
![Page 11: Scalability performance on_php](https://reader033.vdocuments.mx/reader033/viewer/2022052522/554f774db4c9052a518b480c/html5/thumbnails/11.jpg)
PHP hizlandiricilar
![Page 12: Scalability performance on_php](https://reader033.vdocuments.mx/reader033/viewer/2022052522/554f774db4c9052a518b480c/html5/thumbnails/12.jpg)
PHP hizlandiricilar
![Page 13: Scalability performance on_php](https://reader033.vdocuments.mx/reader033/viewer/2022052522/554f774db4c9052a518b480c/html5/thumbnails/13.jpg)
APC NEDİR ?““APC, alternatİf PHP önbelleğİdİr. PHP betİklerİnİ derlemek ve APC, alternatİf PHP önbelleğİdİr. PHP betİklerİnİ derlemek ve önbelleklemek İÇİn özgür, açık ve sağlam bİr çalışma ortamı önbelleklemek İÇİn özgür, açık ve sağlam bİr çalışma ortamı sağlamak adına tasarlandı.”sağlamak adına tasarlandı.”
http://www.belgeler.org/http://www.belgeler.org/
APC ALTERNATIVE PHP CACHING
APC' NİN AVANTAJLARIOpcode CacheÜcretsİzKod değİşİkLİğİ yokAçık kaynakKolay Kurulum
http://www.php.net/manual/tr/apc.configuration.php
apc.stat=1 DOSYA DEĞİŞİKLİĞİNDE BELLEĞİ GÜNCELLEAPC.SHM_SIZE=512 MB CİNSİNDEN BELLEKTE KULLANILACAK ALAN
![Page 14: Scalability performance on_php](https://reader033.vdocuments.mx/reader033/viewer/2022052522/554f774db4c9052a518b480c/html5/thumbnails/14.jpg)
APCab -c 20 -n 1000 http://blog.mustafaileri.com/
SANİYE BAŞINA İSTEKTOPLAM SÜRE
APC NORMAL13.61 8.39
73.492 119.248
REQUEST PER SECOND
SANİYE
ALTERNATIVE PHP CACHING
![Page 15: Scalability performance on_php](https://reader033.vdocuments.mx/reader033/viewer/2022052522/554f774db4c9052a518b480c/html5/thumbnails/15.jpg)
Önbellekleme sİstemlerİ
ÖNBELLEKLEMEİSTENİLEN BİR VERİNİN GELECEKTEKİ OLASI İSTEKLERDE DAHA HIZLI SERVİS EDİLEBİLMESİ AMACI İLE
BELLEKTE TUTULMASIDIR.
ALTERNATİFLERMEMCACHED
HAZELCASTTERRACOTTA
REDISAPC
NEDEN ?DISK I/O AZALTMAK İÇİNDB BOTTLENECK AZALTMAKHIZ
![Page 16: Scalability performance on_php](https://reader033.vdocuments.mx/reader033/viewer/2022052522/554f774db4c9052a518b480c/html5/thumbnails/16.jpg)
Önbellekleme sİstemlerİ
![Page 17: Scalability performance on_php](https://reader033.vdocuments.mx/reader033/viewer/2022052522/554f774db4c9052a518b480c/html5/thumbnails/17.jpg)
“There are only two hard things in Computer Science: cache invalidation and naming things”.
ÖNBELLEKLEME SİSTEMLERİ
Phil Lewis Karlton
![Page 18: Scalability performance on_php](https://reader033.vdocuments.mx/reader033/viewer/2022052522/554f774db4c9052a518b480c/html5/thumbnails/18.jpg)
ÖNBELLEKLEME SİSTEMLERİ
Kİmlİk doğrulamaÖNBELLEKLEME servİsLERİNDE kİmlİk DOĞRULAMA OLMAYABİLİR ( BKZ. MEMCACHED ).
Verİ kontrolüBelleklenecek verİnİn kontrolü sağlanmalı,belleklenen değer İstenİldİğİ zaman yenİlenebİlmelİ.
Depolama aracı olarak kullanırken dİkkat edıİlmelİÖNBELLEKLEME SİSTEMLERİNDE tutulan verİlerİn bİr belleklenme sÜresİ OLABİLİR, Bu süre sonunda verİler sİlİnEBİLİR.
![Page 19: Scalability performance on_php](https://reader033.vdocuments.mx/reader033/viewer/2022052522/554f774db4c9052a518b480c/html5/thumbnails/19.jpg)
Alternatİfler
memcacheD 11211
MemcacheD, verİtabanı yükünü hafİfleterek, dİnamİk web uygulamalarınıN hızlandırılmasını amaçlayan, açık kaynak olarak gelİştİrİlen, dağıtık Mİmarİye destek veren bİr bellekleme sİstemİdİr.
MemcacheD nedİr ?
ApcREDIS
MembaseHazelCast
Memcachedbxcache
![Page 20: Scalability performance on_php](https://reader033.vdocuments.mx/reader033/viewer/2022052522/554f774db4c9052a518b480c/html5/thumbnails/20.jpg)
arama motorları
ARAMA MOTORLARIBİR BİLGİSAYAR SİSTEMİ ÜZERİNDE DEPOLANAN BİLGİLERİ BULMAYA YARDIMCI OLMAK İÇİN TASARLANMIŞ
SİSTEMLERDİR. TEMEL AMAÇ VERİTABANINI GEREKSİZ VE YÜKLÜ SORGULARDAN KURTARMAKTIR.
AlternatİflerSOLR
LUCENESPHINX
ELASTIC SEARCH
NEDEN ?ÇÜNKÜ VERİTABANINDA ARAMa MALİYETLİ VE SORUNLU BİR İŞTİR.
![Page 21: Scalability performance on_php](https://reader033.vdocuments.mx/reader033/viewer/2022052522/554f774db4c9052a518b480c/html5/thumbnails/21.jpg)
arama motorları
![Page 22: Scalability performance on_php](https://reader033.vdocuments.mx/reader033/viewer/2022052522/554f774db4c9052a518b480c/html5/thumbnails/22.jpg)
SPHINX Indexer, searchd
SPHINXAÇIK KAYNAK OLARAK C++ İLE GELİŞTİRİLMİŞ BİR ARAMA MOTORUDUR.2001 yılında başlamış bİR PROJEDİR.
KİMLER KULLANIYOR ?Netlog, Craıgslıst, MozILLA, DAILY MOTION, META CAFE, CEVREMDENEVAR :)
![Page 23: Scalability performance on_php](https://reader033.vdocuments.mx/reader033/viewer/2022052522/554f774db4c9052a518b480c/html5/thumbnails/23.jpg)
SPHINX Indexer, searchd
KONFİGÜRASYONSPHINX KONFİGÜRASYON DOSYASI /etc/sphinxsearch/sphinxsearch.conf4 FARKLI BÖLÜMDEN OLUŞUR.
1. source: VERİ KAYNAĞININ TANIMLANDIĞI BÖLÜM2. index: VERİ İÇİN İNDEKSLEME AYARLARININ BULUNDUĞU BÖLÜM3. indexer: İNDEKSLEYİCİ AYARLARI4. searchd: ARAMA SUNUCUSU AYARLARI
![Page 24: Scalability performance on_php](https://reader033.vdocuments.mx/reader033/viewer/2022052522/554f774db4c9052a518b480c/html5/thumbnails/24.jpg)
SPHINX Indexer, searchd
Sourcesource geo{ type = mysql sql_host = 127.0.0.1 sql_user = root sql_pass = root sql_db = veritabani_adi sql_port = 3306 sql_query_pre = set names utf8 sql_query_pre = set session query_cache_type=OFF sql_query = SELECT L . *, RADIANS( L.locationLng ) AS longitude, RADIANS( L.locationLat ) AS latitude,GROUP_CONCAT(T.tagName) AS tagLabels FROM location L LEFT JOIN locationTagRelation LTR ON LTR.locationId=L.locationId LEFT JOIN tag T ON T.tagId=LTR.tagId WHERE locationStatus='active' GROUP BY (L.locationId) sql_attr_float = longitude sql_attr_float = latitude sql_attr_uint = locationtype sql_attr_multi = uint tagid FROM query; SELECT locationId,tagId FROM locationTagRelation}
![Page 25: Scalability performance on_php](https://reader033.vdocuments.mx/reader033/viewer/2022052522/554f774db4c9052a518b480c/html5/thumbnails/25.jpg)
SPHINX Indexer, searchd
INDEXindex geo{ source = geo path = /etc/sphinxsearch/data/geo/geo docinfo = extern mlock = 0 min_word_len = 1 charset_type = utf-8}
INDEXERindex geo{
mem_limit = 256M}
![Page 26: Scalability performance on_php](https://reader033.vdocuments.mx/reader033/viewer/2022052522/554f774db4c9052a518b480c/html5/thumbnails/26.jpg)
SPHINX Indexer, searchd
SEARCHDsearchd{ listen = 127.0.0.1 Port = 3312 log = /var/log/sphinxsearch/searchd.log query_log = /var/log/sphinxsearch/query.log read_timeout = 5 client_timeout = 300 max_children = 30 pid_file = /var/run/searchd.pid max_matches = 1000 preopen_indexes = 0 max_packet_size = 8M max_filters = 256 max_filter_values = 4096}
![Page 27: Scalability performance on_php](https://reader033.vdocuments.mx/reader033/viewer/2022052522/554f774db4c9052a518b480c/html5/thumbnails/27.jpg)
SPHINX Indexer, searchd
İNDEKSLEME VE ARAMA İŞLEMİ
![Page 28: Scalability performance on_php](https://reader033.vdocuments.mx/reader033/viewer/2022052522/554f774db4c9052a518b480c/html5/thumbnails/28.jpg)
MESAJ KUYRUK SİSTEMLERİ
MESAJ KUYRUK SİSTEMLERİASENKRON İŞLEMLERİ SIRAYA KOYARAK ZAMANI GELDİĞİNDE BUNLARI İŞLEYEBİLEN SİSTEMLERDİR.
2004 yılında başlayan ve 2006 yılında olgunlaşan açık standartlı AMQP çözümü İle "mesaj kuyruğu" çözümlerİ bİr standart İle açık hale geldİ.
AlternatİflerApache Qpid
JORAMRabbitMQ
Red Hat Enterprise MRGStormMQactıvemq
NEDEN ?VERİTABANLARINDA KUYRUK İMPLEMENTASYONU GENELDE YOKTUR.BU TARZ İŞLEMLER İÇİN VERİTABANINA ÇOK FAZLA SAYIDA SORGU GİDEBİLİR.
http://www.kodaman.org/yazi/mesaj-kuyrugu-ve-rabbitmq
![Page 29: Scalability performance on_php](https://reader033.vdocuments.mx/reader033/viewer/2022052522/554f774db4c9052a518b480c/html5/thumbnails/29.jpg)
MESAJ KUYRUK SİSTEMLERİ
![Page 30: Scalability performance on_php](https://reader033.vdocuments.mx/reader033/viewer/2022052522/554f774db4c9052a518b480c/html5/thumbnails/30.jpg)
MESAJ KUYRUK SİSTEMLERİANTI-PATTERNANTI-PATTERNVERİTABANININ KUYRUK YAPiSI OLARAK KULLANILMASI BİR 'ANTIPATTERN' DİR.VERİTABANININ KUYRUK YAPiSI OLARAK KULLANILMASI BİR 'ANTIPATTERN' DİR.
NEDEN ?NEDEN ?1. SİSTEMİN AKIŞI, KUYRUKLANMIŞ İŞLEMLERİN SONUÇLARINDAN ETKİLENİR.1. SİSTEMİN AKIŞI, KUYRUKLANMIŞ İŞLEMLERİN SONUÇLARINDAN ETKİLENİR.
2. SÜREKLİ OLUŞAN INSERT DELETE UPDATE SORGULARI YÜZÜNDEN VERİTABANINDA 2. SÜREKLİ OLUŞAN INSERT DELETE UPDATE SORGULARI YÜZÜNDEN VERİTABANINDA 'BOTTLENECK' OLUŞUR.'BOTTLENECK' OLUŞUR.
3. VERİTABANI ÜZERİNDE KUYRUK YAPISI KURMAK İSTERSENİZ BUNUN İÇİN BİR KUYRUK 3. VERİTABANI ÜZERİNDE KUYRUK YAPISI KURMAK İSTERSENİZ BUNUN İÇİN BİR KUYRUK İMPLEMENTASYONU OLUŞTURMANIZ GEREKEBİLİR.İMPLEMENTASYONU OLUŞTURMANIZ GEREKEBİLİR.
TEHLİKE !TEHLİKE !ANTİPATTERNLER İLK UYGULANDIĞINDA HERŞEY YOLUNDA VE DOĞRU GİDİYORMUŞ GİBİ GÖZÜKSE ANTİPATTERNLER İLK UYGULANDIĞINDA HERŞEY YOLUNDA VE DOĞRU GİDİYORMUŞ GİBİ GÖZÜKSE DE SİSTEMİNİZ BÜYÜDÜKÇE DURUMU İÇİNDEN ÇIKILMAZ BİR HALE GETİRİRLER.DE SİSTEMİNİZ BÜYÜDÜKÇE DURUMU İÇİNDEN ÇIKILMAZ BİR HALE GETİRİRLER.
![Page 31: Scalability performance on_php](https://reader033.vdocuments.mx/reader033/viewer/2022052522/554f774db4c9052a518b480c/html5/thumbnails/31.jpg)
Sorular ?
![Page 32: Scalability performance on_php](https://reader033.vdocuments.mx/reader033/viewer/2022052522/554f774db4c9052a518b480c/html5/thumbnails/32.jpg)
EMAIL:[email protected]
TWITTER:https://twitter.com/mustafailerihttps://twitter.com/mustafaileri
LINKEDIN:http://www.linkedin.com/pub/mustafa-http://www.linkedin.com/pub/mustafa-ileri/33/727/a27ileri/33/727/a27
BLOG:http://blog.mustafaileri.comhttp://blog.sonsuzdongu.com
MUSTAFA İLERİSoftware Developer
19 MAYIS M. NİHAL S. NO:5 DEVECİOĞLU APT. DAİRE:3
ERENKÖY – KADIKÖY / İSTANBUL