170 likes | 337 Views
APACHE, PHP VE LINUX İLE MAKSİMUM PERFORMANS. Burak DAYIOĞLU http://www.dayioglu.net dayioglu@metu.edu.tr. Daha Yüksek Performans. Amaç: Daha fazla yatırım yapmadan aynı altyapıyı daha etkin kullanmak
E N D
APACHE, PHP VE LINUXİLE MAKSİMUM PERFORMANS Burak DAYIOĞLUhttp://www.dayioglu.net dayioglu@metu.edu.tr
Daha Yüksek Performans • Amaç: Daha fazla yatırım yapmadan aynı altyapıyı daha etkin kullanmak • Beklenti: Web üzerinden çok yoğun kullanılacak uygulamanın minimal sürede gerçekleştirilmesi ve hizmete alınması • Apache ve PHP en uygun ikili • Linux, x86 mimarisi üzerinde Oracle çalışan UNIX’lerden birisi
Çekirdek Ayarları Değişikliği • Çekirdeğin çalışma zamanında ayarlarını değiştirmek mümkün • İki farklı yöntem • echo 1 > /proc/sys/net/ipv4/ip_forward • sysctl -w net.ipv4.ip_forward=1 • Her iki durumda da değişiklikler geçici; iki alternatif yöntem ile kalıcı hale getirilebilir: • Değişikliklerin açılış betiklerine yerleştirilmesi • Uygun satırların /etc/sysctl.conf ’a eklenmesi
Dosya Sistemi Ayarları - 1 - • Son erişim zamanı bilgisinin (atime) güncellenmesini iptal edin • /etc/fstab dosyasında ilgili dosya sistemi için:/dev/sda1 /webfiles ext2 noatime 1 2 • Çekirdeğin dosya sistemi için tampon bellek yönetim stratejisini değiştirin sysctl -w vm.bdflush="100 5000 640 2560 150 30000 5000 1884 2“ /doc/sysctl/vm.txt dosyasında açıklamaları mevcut
Dosya Sistemi Ayarları - 2 - • Dosya sistemi belirteçlerinin ve inode sayısının limitlerini arttırın: sysctl –w fs.inode-max=“128000” sysctl –w fs.file-max=“64000” ulimit –n 64000 • Yeni nesil dosya sistemlerinden birisini kullanın (reiserfs, ext3 vb.)
Ağ Sürücüsü Ayarları • Yerel TCP bağlantı noktası aralığını genişletin: sysctl –w net.ipv4.ip_local_port_range=“1024 65000” • Ağ sürücüsünün işini hafifletmek için “TCP Timestamping”’i iptal edin: sysctl –w net.ipv4.tcp_timestamps=0
Ağ Sürücüsü Ayarları - 2 - • Hizmet almak üzere bağlantı kuyruğunda bekleyebilecek istemci sayısını arttırın sysctl –w net.ipv4.tcp_max_syn_backlog = 256 • TCP Açık iletişim zaman-aşımını düşürün sysctl –w net.ipv4.tcp_keepalive_time=30 • İletişim sonlandırma zaman aşımını düşürün sysctl –w net.ipv4.tcp_fin_timeout = 30
Görev Yönetimi Ayarları • Bir kullanıcının aynı anda işletebileceği maksimum süreç sayısını arttırın ulimit –u unlimited • İnteraktif kullanıcılar var ise süreç sayısını rahatça ARTTIRAMAZSINIZ! while(1) fork();
Güncel Çekirdek Kullanımı • Çekirdek 2.2.x yerine 2.4.x kullanımı web hizmet performansını ciddi biçimde arttırdı • Kesilme temelli G/Ç (Interrupt-driven I/O) • Yoklama temelli G/Ç (Poll-driven I/O) • Hibrid G/Ç
Apache’nin Derlenmesi • Modülleri dikkatle seçin • Derlenmiş modüllerin bir listesini httpd –lile görebilirsiniz • Gereksiz tüm modülleri iptal edin • Mmap_static modülunu ekleyin • PHP’yi modül olarak ekleyin • Gereksiz php bileşenlerini devre dışı bırakın • Tüm Apache modüllerini statik olarak derleyin • Maksimum paralel istem sayısını arttırın • src/include/httpd.h dosyasını açıp HARD_SERVER_LIMIT değişkeninin değerini4096’ya çıkartın
Apache Görev Yönetimi • MaxClients XXX • StartServers XXX • MinSpareServers XXX • MaxSpareServers XXX • MaxRequestsPerChild 0
Apache Ayarları • FollowSymLinks on • AllowOverride none • HostNameLookups off • KeepAlive on • KeepAliveTimeout • MaxKeepAliveRequests
Resimleri Bellekte Bekletme • MMapFile ile ön-bellek kullanımı disk erişimini ciddi biçimde azaltabilir • MMAPFile /usr/local/apache/htdocs/img/a1.jpg
PHP Ayarları • PHP’yi statik Apache modülü olarak derleyin • Ayarlardan • max_execution_time = 30 • memory_limit = 2097152 (2MB) • display_errors = Off • log_errors = Off • track_errors = Off • register_argc_argv = Off
PHP ile Programlama • Echo, print ve PHP koduna HTML karıştırma • Aralarında performans bakımından önemli bir fark yoktur • Kalıcı (ing. persistent) veritabanı bağlantıları
PHP Yorumlayıcısı • PHP yorumlayıcısının çalışma biçimi <? $x=5; echo $x; exit; /* 100 satır daha komut */?> • Hiç çağrılmamasına rağmen, 100 satırın silinmesi çalışma hızını ciddi biçimde arttırır
APACHE, PHP VE LINUXİLE MAKSİMUM PERFORMANS Burak DAYIOĞLUhttp://www.dayioglu.net dayioglu@metu.edu.tr