17
APACHE, PHP VE LINUX APACHE, PHP VE LINUX İLE MAKSİMUM PERFORMANS İLE MAKSİMUM PERFORMANS Burak DAYIOĞLU Burak DAYIOĞLU http://www.dayioglu.n http://www.dayioglu.n et et [email protected] [email protected]

APACHE, PHP VE LINUX İLE MAKSİMUM PERFORMANS

  • Upload
    braith

  • View
    38

  • Download
    2

Embed Size (px)

DESCRIPTION

APACHE, PHP VE LINUX İLE MAKSİMUM PERFORMANS. Burak DAYIOĞLU http://www.dayioglu.net [email protected]. Daha Yüksek Performans. Amaç: Daha fazla yatırım yapmadan aynı altyapıyı daha etkin kullanmak - PowerPoint PPT Presentation

Citation preview

Page 1: APACHE, PHP VE LINUX İLE MAKSİMUM PERFORMANS

APACHE, PHP VE LINUXAPACHE, PHP VE LINUXİLE MAKSİMUM İLE MAKSİMUM PERFORMANSPERFORMANS

Burak DAYIOĞLUBurak DAYIOĞLUhttp://www.dayioglu.nethttp://www.dayioglu.net

[email protected]@metu.edu.tr

Page 2: APACHE, PHP VE LINUX İLE MAKSİMUM PERFORMANS

2

Daha Yüksek PerformansDaha Yüksek PerformansAmaç: Daha fazla Amaç: Daha fazla yatırımyatırım yapmadan yapmadan aynı altyapıyı daha etkin kullanmakaynı altyapıyı daha etkin kullanmak

Beklenti: Web üzerinden çok yoğun Beklenti: Web üzerinden çok yoğun kullanılacak uygulamanın minimal kullanılacak uygulamanın minimal sürede gerçekleştirilmesi ve hizmete sürede gerçekleştirilmesi ve hizmete alınmasıalınması

Apache ve PHP en uygun ikiliApache ve PHP en uygun ikili

Linux, x86 mimarisi üzerinde Oracle Linux, x86 mimarisi üzerinde Oracle çalışan UNIX’lerden birisiçalışan UNIX’lerden birisi

Page 3: APACHE, PHP VE LINUX İLE MAKSİMUM PERFORMANS

3

Çekirdek Ayarları Çekirdek Ayarları DeğişikliğiDeğişikliği

Çekirdeğin çalışma zamanında ayarlarını Çekirdeğin çalışma zamanında ayarlarını değiştirmek mümkündeğiştirmek mümkün

İki farklı yöntemİki farklı yöntem echo 1 > /proc/sys/net/ipv4/ip_forwardecho 1 > /proc/sys/net/ipv4/ip_forward sysctl -w net.ipv4.ip_forward=1sysctl -w net.ipv4.ip_forward=1

Her iki durumda da değişiklikler geçici; iki Her iki durumda da değişiklikler geçici; iki alternatif yöntem ile kalıcı hale getirilebilir:alternatif yöntem ile kalıcı hale getirilebilir: Değişikliklerin açılış betiklerine yerleştirilmesiDeğişikliklerin açılış betiklerine yerleştirilmesi Uygun satırların /etc/sysctl.conf ’a eklenmesiUygun satırların /etc/sysctl.conf ’a eklenmesi

Page 4: APACHE, PHP VE LINUX İLE MAKSİMUM PERFORMANS

4

Dosya Sistemi Ayarları - Dosya Sistemi Ayarları - 1 -1 -

Son erişim zamanı bilgisinin (Son erişim zamanı bilgisinin (atimeatime) ) güncellenmesini iptal edingüncellenmesini iptal edin /etc/fstab dosyasında ilgili dosya sistemi /etc/fstab dosyasında ilgili dosya sistemi

için:için:/dev/sda1 /webfiles ext2 /dev/sda1 /webfiles ext2 noatimenoatime 1 2 1 2

Çekirdeğin dosya sistemi için tampon Çekirdeğin dosya sistemi için tampon bellek yönetim stratejisini değiştirinbellek yönetim stratejisini değiştirinsysctl -w vm.bdflush="100 5000 640 2560 sysctl -w vm.bdflush="100 5000 640 2560 150 30000 5000 1884 2“150 30000 5000 1884 2“

/doc/sysctl/vm.txt dosyasında açıklamaları /doc/sysctl/vm.txt dosyasında açıklamaları mevcutmevcut

Page 5: APACHE, PHP VE LINUX İLE MAKSİMUM PERFORMANS

5

Dosya Sistemi Ayarları - Dosya Sistemi Ayarları - 2 -2 -

Dosya sistemi belirteçlerinin ve inode Dosya sistemi belirteçlerinin ve inode sayısının limitlerini arttırın:sayısının limitlerini arttırın:sysctl –w fs.inode-max=“128000”sysctl –w fs.inode-max=“128000”

sysctl –w fs.file-max=“64000”sysctl –w fs.file-max=“64000”

ulimit –n 64000ulimit –n 64000

Yeni nesil dosya sistemlerinden birisini Yeni nesil dosya sistemlerinden birisini kullanın (reiserfs, ext3 vb.)kullanın (reiserfs, ext3 vb.)

Page 6: APACHE, PHP VE LINUX İLE MAKSİMUM PERFORMANS

6

Ağ Sürücüsü AyarlarıAğ Sürücüsü AyarlarıYerel TCP bağlantı noktası aralığını Yerel TCP bağlantı noktası aralığını genişletin:genişletin:sysctl –w sysctl –w net.ipv4.ip_local_port_range=“1024 net.ipv4.ip_local_port_range=“1024 65000”65000”

Ağ sürücüsünün işini hafifletmek için Ağ sürücüsünün işini hafifletmek için “TCP Timestamping”’i iptal edin:“TCP Timestamping”’i iptal edin:sysctl –w net.ipv4.tcp_timestamps=0sysctl –w net.ipv4.tcp_timestamps=0

Page 7: APACHE, PHP VE LINUX İLE MAKSİMUM PERFORMANS

7

Ağ Sürücüsü Ayarları - 2 Ağ Sürücüsü Ayarları - 2 --

Hizmet almak üzere bağlantı Hizmet almak üzere bağlantı kuyruğunda bekleyebilecek istemci kuyruğunda bekleyebilecek istemci sayısını arttırınsayısını arttırınsysctl –w net.ipv4.tcp_max_syn_backlog = sysctl –w net.ipv4.tcp_max_syn_backlog = 256256

TCP Açık iletişim zaman-aşımını düşürünTCP Açık iletişim zaman-aşımını düşürünsysctl –w net.ipv4.tcp_keepalive_time=30sysctl –w net.ipv4.tcp_keepalive_time=30

İletişim sonlandırma zaman aşımını İletişim sonlandırma zaman aşımını düşüründüşürünsysctl –w net.ipv4.tcp_fin_timeout = 30sysctl –w net.ipv4.tcp_fin_timeout = 30

Page 8: APACHE, PHP VE LINUX İLE MAKSİMUM PERFORMANS

8

Görev Yönetimi AyarlarıGörev Yönetimi AyarlarıBir kullanıcının aynı anda işletebileceği Bir kullanıcının aynı anda işletebileceği maksimum süreç sayısını arttırınmaksimum süreç sayısını arttırınulimit –u unlimitedulimit –u unlimited

İnteraktif kullanıcılar var ise süreç İnteraktif kullanıcılar var ise süreç sayısını rahatça ARTTIRAMAZSINIZ!sayısını rahatça ARTTIRAMAZSINIZ!while(1) fork();while(1) fork();

Page 9: APACHE, PHP VE LINUX İLE MAKSİMUM PERFORMANS

9

Güncel Çekirdek KullanımıGüncel Çekirdek KullanımıÇekirdek 2.2.x yerine 2.4.x kullanımı Çekirdek 2.2.x yerine 2.4.x kullanımı web hizmet performansını ciddi web hizmet performansını ciddi biçimde arttırdıbiçimde arttırdı Kesilme temelli G/Ç (Interrupt-driven I/O)Kesilme temelli G/Ç (Interrupt-driven I/O) Yoklama temelli G/Ç (Poll-driven I/O)Yoklama temelli G/Ç (Poll-driven I/O) Hibrid G/ÇHibrid G/Ç

Page 10: APACHE, PHP VE LINUX İLE MAKSİMUM PERFORMANS

10

Apache’nin DerlenmesiApache’nin DerlenmesiModModülleri dikkatle seçinülleri dikkatle seçin Derlenmiş modüllerin bir listesini Derlenmiş modüllerin bir listesini httpd –lhttpd –l

ile görebilirsinizile görebilirsiniz Gereksiz tüm modülleri iptal edinGereksiz tüm modülleri iptal edin Mmap_static modülunu ekleyinMmap_static modülunu ekleyin PHP’yi modül olarak ekleyinPHP’yi modül olarak ekleyin

Gereksiz php bileşenlerini devre dışı bırakınGereksiz php bileşenlerini devre dışı bırakın Tüm Apache modüllerini statik olarak derleyinTüm Apache modüllerini statik olarak derleyin

Maksimum paralel istem sayısını arttırınMaksimum paralel istem sayısını arttırın src/include/httpd.hsrc/include/httpd.h dosyasını açıp dosyasını açıp HARD_SERVER_LIMITHARD_SERVER_LIMIT değişkeninin değerini değişkeninin değerini4096’ya çıkartın4096’ya çıkartın

Page 11: APACHE, PHP VE LINUX İLE MAKSİMUM PERFORMANS

11

Apache Görev YönetimiApache Görev YönetimiMaxClients XXXMaxClients XXX

StartServers XXXStartServers XXX

MinSpareServers XXXMinSpareServers XXX

MaxSpareServers XXXMaxSpareServers XXX

MaxRequestsPerChild 0MaxRequestsPerChild 0

Page 12: APACHE, PHP VE LINUX İLE MAKSİMUM PERFORMANS

12

Apache AyarlarıApache AyarlarıFollowSymLinks onFollowSymLinks on

AllowOverride noneAllowOverride none

HostNameLookups offHostNameLookups off

KeepAlive onKeepAlive on

KeepAliveTimeoutKeepAliveTimeout

MaxKeepAliveRequestsMaxKeepAliveRequests

Page 13: APACHE, PHP VE LINUX İLE MAKSİMUM PERFORMANS

13

Resimleri Bellekte Resimleri Bellekte BekletmeBekletme

MMapFile ile ön-bellek kullanımı disk MMapFile ile ön-bellek kullanımı disk erişimini ciddi biçimde azaltabilirerişimini ciddi biçimde azaltabilir MMAPFile MMAPFile

/usr/local/apache/htdocs/img/a1.jpg/usr/local/apache/htdocs/img/a1.jpg

Page 14: APACHE, PHP VE LINUX İLE MAKSİMUM PERFORMANS

14

PHP AyarlarıPHP AyarlarıPHP’yi statik Apache modülü olarak PHP’yi statik Apache modülü olarak derleyinderleyin

AyarlardanAyarlardan max_execution_time = 30max_execution_time = 30 memory_limit = 2097152 (2MB)memory_limit = 2097152 (2MB) display_errors = Offdisplay_errors = Off log_errors = Offlog_errors = Off track_errors = Offtrack_errors = Off register_argc_argv = Offregister_argc_argv = Off

Page 15: APACHE, PHP VE LINUX İLE MAKSİMUM PERFORMANS

15

PHP ile ProgramlamaPHP ile ProgramlamaEcho, print ve PHP koduna HTML Echo, print ve PHP koduna HTML karıştırmakarıştırma Aralarında performans bakımından önemli Aralarında performans bakımından önemli

bir fark yokturbir fark yoktur

Kalıcı (ing. persistent) veritabanı Kalıcı (ing. persistent) veritabanı bağlantılarıbağlantıları

Page 16: APACHE, PHP VE LINUX İLE MAKSİMUM PERFORMANS

16

PHP YorumlayıcısıPHP YorumlayıcısıPHP yorumlayıcısının çalışma biçimiPHP yorumlayıcısının çalışma biçimi <?<? $x=5; $x=5; echo $x; echo $x; exit; exit; /* 100 satır daha komut */ /* 100 satır daha komut */?>?>

Hiç çağrılmamasına rağmen, 100 Hiç çağrılmamasına rağmen, 100 satırın silinmesi çalışma hızını ciddi satırın silinmesi çalışma hızını ciddi biçimde arttırırbiçimde arttırır

Page 17: APACHE, PHP VE LINUX İLE MAKSİMUM PERFORMANS

APACHE, PHP VE LINUXAPACHE, PHP VE LINUXİLE MAKSİMUM İLE MAKSİMUM PERFORMANSPERFORMANS

Burak DAYIOĞLUBurak DAYIOĞLUhttp://www.dayioglu.nethttp://www.dayioglu.net

[email protected]@metu.edu.tr