Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Scalability performance on_php
1. PHP ölçeklenebİlİrlİk
Ve Performans
Mustafa İlerİ
EkİM'12 - Özgür web günlerİ
2. Yatay ve dİkey Ölçekleme
Temel performans problemlerİ
Yük DENGELEYİCİLER ( load balancer )
Web hızlandırıcılar
PHP hızlandırıcılar
Önbellekleme Sİstemlerİ
arama motorları
MESAJ KUYRUK SİSTEMLERİ
SORULAR
3. Yatay ve dİkey ölçekleme
Ö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.
DİKEY ÖLÇEKLENEBİLİRLİK YATAY ÖLÇEKLENEBİLİRLİK
BİR SİSTEMİN İŞLEM HACMİNİ ARTTIRABİLMEK
TEK BİR MAKİNE İÇİN KAYNAKLARI İÇİN TEK MAKİNEDEKİ YÜKÜ DÜZGÜN OLARAK
ARTTIRARAK SİSTEMİN İŞLEM HACMİNİ BİRDEN FAZLA MAKİNEYE VE DÜĞÜME
ARTTIRABİLMEKTİR. YAYABİLMEKTİR.
4. YATAY VE DİKEY ÖLÇEKLEME
yatay ÖLÇEKLENEBİLİRLİK
SİSTEMİN CEVAP VERME SÜRESİ
DİKEY ÖLÇEKLENEBİLİRLİK
SİSTEM YÜKÜ
5. PERFORMANS VE ÖLÇEKLENDİRME
ÖlçeklenebİLİRLİK != PERFORMANS
PERFORMANS PROBLEMİ: BİR SİSTEM, TEK KULLANICI İLE YAVAŞ ÇALIŞIYORSA
BU 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 > PERFORMANS
TEMEL SORUN KAYNAK YÖNETİMİ
6. Temel performans problemlerİ
Gereksİz network trafİğİ
Dİsk İşlemlerİ
Verİtabanına gereksİz yapılaN sorgular
Sİstemde süreklİ çalışan scrİptler
Kötü Kod
7. Yük DENGELEYİCİLER
YÜK DENGELEME
Bİ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.
http://en.wikipedia.org/wiki/Load_balancing_(computing)
13. APC ALTERNATIVE PHP CACHING
APC NEDİR ?
“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ı
sağlamak adına tasarlandı.”
http://www.belgeler.org/
APC' NİN AVANTAJLARI
Opcode Cache
Ücretsİz
Kod değİşİkLİğİ yok apc.stat=1 DOSYA DEĞİŞİKLİĞİNDE BELLEĞİ GÜNCELLE
APC.SHM_SIZE=512 MB CİNSİNDEN BELLEKTE KULLANILACAK ALAN
Açık kaynak
Kolay Kurulum
http://www.php.net/manual/tr/apc.configuration.php
14. APC ALTERNATIVE PHP CACHING
ab -c 20 -n 1000 http://blog.mustafaileri.com/
APC NORMAL
SANİYE BAŞINA İSTEK 13.61 8.39 REQUEST PER SECOND
TOPLAM SÜRE 73.492 119.248 SANİYE
15. Ö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.
NEDEN ? ALTERNATİFLER
DISK I/O AZALTMAK İÇİN MEMCACHED
DB BOTTLENECK AZALTMAK HAZELCAST
HIZ TERRACOTTA
REDIS
APC
17. ÖNBELLEKLEME SİSTEMLERİ
“There are only two hard things in Computer Science:
cache invalidation and naming things”.
Phil Lewis Karlton
18. Ö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.
19. memcacheD 11211
MemcacheD nedİr ?
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.
Alternatİfler
Apc
REDIS
Membase
HazelCast
Memcachedb
xcache
20. arama motorları
ARAMA MOTORLARI
Bİ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.
NEDEN ? Alternatİfler
ÇÜNKÜ VERİTABANINDA ARAMa MALİYETLİ VE SORUNLU BİR İŞTİR. SOLR
LUCENE
SPHINX
ELASTIC SEARCH
22. SPHINX Indexer, searchd
SPHINX
AÇ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 :)
23. SPHINX Indexer, searchd
KONFİGÜRASYON
SPHINX KONFİGÜRASYON DOSYASI /etc/sphinxsearch/sphinxsearch.conf
4 FARKLI BÖLÜMDEN OLUŞUR.
1. source: VERİ KAYNAĞININ TANIMLANDIĞI BÖLÜM
2. index: VERİ İÇİN İNDEKSLEME AYARLARININ BULUNDUĞU BÖLÜM
3. indexer: İNDEKSLEYİCİ AYARLARI
4. searchd: ARAMA SUNUCUSU AYARLARI
24. SPHINX Indexer, searchd
Source
source 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
}
27. SPHINX Indexer, searchd
İNDEKSLEME VE ARAMA İŞLEMİ
28. 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İ.
NEDEN ? Alternatİfler
VERİTABANLARINDA KUYRUK İMPLEMENTASYONU GENELDE YOKTUR. Apache Qpid
BU TARZ İŞLEMLER İÇİN VERİTABANINA ÇOK FAZLA SAYIDA SORGU GİDEBİLİR. JORAM
RabbitMQ
Red Hat Enterprise MRG
StormMQ
http://www.kodaman.org/yazi/mesaj-kuyrugu-ve-rabbitmq actıvemq
30. MESAJ KUYRUK SİSTEMLERİ
ANTI-PATTERN
VERİTABANININ KUYRUK YAPiSI OLARAK KULLANILMASI BİR 'ANTIPATTERN' DİR.
NEDEN ?
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
'BOTTLENECK' OLUŞUR.
3. VERİTABANI ÜZERİNDE KUYRUK YAPISI KURMAK İSTERSENİZ BUNUN İÇİN BİR KUYRUK
İMPLEMENTASYONU OLUŞTURMANIZ GEREKEBİLİR.
TEHLİKE !
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.