Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

APACHE, PHP VE LINUX İLE MAKSİMUM PERFORMANS

Benzer bir sunumlar


... konulu sunumlar: "APACHE, PHP VE LINUX İLE MAKSİMUM PERFORMANS"— Sunum transkripti:

1 APACHE, PHP VE LINUX İLE MAKSİMUM PERFORMANS
Burak DAYIOĞLU

2 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

3 Ç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

4 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=" “ /doc/sysctl/vm.txt dosyasında açıklamaları mevcut union bdflush_param{ struct { int nfract; /* Percentage of buffer cache dirty to activate bdflush */ int ndirty; /* Maximum number of dirty blocks to write out per wake-cycle */ int nrefill; /* Number of clean buffers to try to obtain each time we call refill */ int nref_dirt; /* Dirty buffer threshold for activating bdflush when trying to refill buffers. */ int dummy1; /* unused */ int age_buffer; /* Time for normal buffer to age before we flush it */ int age_super; /* Time for superblock to age before we flush it */ int dummy2; /* unused */ int dummy3; /* unused */ } b_un; unsigned int data[N_PARAM]; } bdf_prm = {{40, 500, 64, 256, 15, 30*HZ, 5*HZ, 1884, 2}}; The first parameter governs the maximum number of dirty buffers in the buffer cache. Dirty means that the contents of the buffer still have to be written to disk (as opposed to a clean buffer, which can just be forgotten about). Setting this to a high value means that Linux can delay disk writes for a long time, but it also means that it will have to do a lot of I/O at once when memory becomes short. A low value will spread out disk I/O more evenly. The second parameter (ndirty) gives the maximum number of dirty buffers that bdflush can write to the disk in one time. A high value will mean delayed, bursty I/O, while a small value can lead to memory shortage when bdflush isn't woken up often enough... The third parameter (nrefill) is the number of buffers that bdflush will add to the list of free buffers when refill_freelist() is called. It is necessary to allocate free buffers beforehand, since the buffers often are of a different size than memory pages and some bookkeeping needs to be done beforehand. The higher the number, the more memory will be wasted and the less often refill_freelist() will need to run. When refill_freelist() comes across more than nref_dirt dirty buffers, it will wake up bdflush. Finally, the age_buffer and age_super parameters govern the maximum time Linux waits before writing out a dirty buffer to disk. The value is expressed in jiffies (clockticks), the number of jiffies per second is 100, except on Alpha machines (1024). Age_buffer is the maximum age for data blocks, while age_super is for filesystem metadata.

5 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.) Maximum number of open file descriptors

6 Ağ Sürücüsü Ayarları Yerel TCP bağlantı noktası aralığını genişletin:
sysctl –w net.ipv4.ip_local_port_range=“ ” Ağ sürücüsünün işini hafifletmek için “TCP Timestamping”’i iptal edin: sysctl –w net.ipv4.tcp_timestamps=0 Timestamp’ler PAWS (protect against wrapped sequence numbers) ve RTT (Round trip time) hesaplama için kullanılırlar.

7 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

8 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(); The maximum number of processes available to a single user

9 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/Ç

10 Apache’nin Derlenmesi
Modülleri dikkatle seçin Derlenmiş modüllerin bir listesini httpd –l ile 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ğerini 4096’ya çıkartın

11 Apache Görev Yönetimi MaxClients XXX StartServers XXX
MinSpareServers XXX MaxSpareServers XXX MaxRequestsPerChild 0 MaxClients aynı anda hizmet verilecek maksimum istemci sayısını belirler. StartServers başlangıçta kaç Apache sürecinin çalıştırılacağını belirler MinSpareServers herhangi bir anda boş bekleyen minimum istemci sayısını belirler. MaxSpareServers herhangi bir anda boş bekleyen maksimum istemci sayısını belirler.

12 Apache Ayarları FollowSymLinks on AllowOverride none
HostNameLookups off KeepAlive on KeepAliveTimeout MaxKeepAliveRequests “AllowOverride Off” her dizinde .htaccess aranmasını engeller. KeepAliveTimeout istem gelmeden keep-alive’ı kapatmadan önce ne kadar bekleneceği. MaxKeepAliveRequest, bir keep-alive süresince işlenebilecek maksimum isteği belirler.

13 Resimleri Bellekte Bekletme
MMapFile ile ön-bellek kullanımı disk erişimini ciddi biçimde azaltabilir MMAPFile /usr/local/apache/htdocs/img/a1.jpg

14 PHP Ayarları PHP’yi statik Apache modülü olarak derleyin Ayarlardan
max_execution_time = 30 memory_limit = (2MB) display_errors = Off log_errors = Off track_errors = Off register_argc_argv = Off

15 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ı Require mutlaka yükler, include gerekli ise yükler

16 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

17 APACHE, PHP VE LINUX İLE MAKSİMUM PERFORMANS
Burak DAYIOĞLU


"APACHE, PHP VE LINUX İLE MAKSİMUM PERFORMANS" indir ppt

Benzer bir sunumlar


Google Reklamları