scalability performance on_php
DESCRIPTION
PHP de olceklenebilirlik ve performansTRANSCRIPT
PHP ölçeklenebİlİrlİk
Mustafa İlerİ
EkİM'12 - Özgür web günlerİ
Ve Performans
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 )
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.
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Ü
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İ
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
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.
Yük dengeleyİCİLER
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
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
PHP hizlandiricilar
PHP hizlandiricilar
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
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
Ö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
Önbellekleme sİstemlerİ
“There are only two hard things in Computer Science: cache invalidation and naming things”.
ÖNBELLEKLEME SİSTEMLERİ
Phil Lewis Karlton
Ö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.
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
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.
arama motorları
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 :)
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
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}
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}
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}
SPHINX Indexer, searchd
İNDEKSLEME VE ARAMA İŞLEMİ
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
MESAJ KUYRUK SİSTEMLERİ
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.
Sorular ?
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