scalability performance on_php

32
PHP ölçeklenebİlİrlİk Mustafa İlerİ EkİM'12 - Özgür web günlerİ Ve Performans

Upload: mustafa-ileri

Post on 10-May-2015

1.977 views

Category:

Technology


2 download

DESCRIPTION

PHP de olceklenebilirlik ve performans

TRANSCRIPT

Page 1: Scalability performance on_php

PHP ölçeklenebİlİrlİk

Mustafa İlerİ

EkİM'12 - Özgür web günlerİ

Ve Performans

Page 2: Scalability performance on_php

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

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

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

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

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

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

Yük dengeleyİCİLER

Page 9: Scalability performance on_php

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

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

PHP hizlandiricilar

Page 12: Scalability performance on_php

PHP hizlandiricilar

Page 13: Scalability performance on_php

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

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

Ö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

Önbellekleme sİstemlerİ

Page 17: Scalability performance on_php

“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

Ö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

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

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

arama motorları

Page 22: Scalability performance on_php

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

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

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

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

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

SPHINX Indexer, searchd

İNDEKSLEME VE ARAMA İŞLEMİ

Page 28: Scalability performance on_php

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

MESAJ KUYRUK SİSTEMLERİ

Page 30: Scalability performance on_php

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

Sorular ?

Page 32: Scalability performance on_php

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