Apache: Mengatasi Overload

From SpeedyWiki

Jump to: navigation, search

Sumber: http://goodmanemail.com/apache-setup.html


Contents

[edit] Masalah

Konfigurasi default apache mengijinkan banyak sekali process jika banyak traffic. Memory mungkin aman-aman saja. Yang akan menjadi masalah adalah cputime, mungkin setiap request akan memperoleh 0.3-5% cputime saja. Akibatnya, proses menjadi terlalu lama sehingga menyebabkan timeout, refresh dan bahkan menambah banyak beban.

[edit] Solusi

Solusinya adalah membatasi apache threads menjadi sangat sedikit (misalnya 16 atau kurang). Artinya, setiap request menjadi memperoleh lebih banyak cpu time.

[edit] Implementasi

Edit file konfigurasi apache, kemungkinan di

/etc/apache2/apache2.conf  -- Ubuntu
/etc/httpd/conf/httpd.conf -- CentOS

Turunkan semua nilai sebanyak mungkin. Naikan nilai MaxRequestsPerChild. Contoh sebagai berikut,

<IfModule prefork.c>
StartServers 2
MinSpareServers 3
MaxSpareServers 5
ServerLimit 16
MaxClients 16
MaxRequestsPerChild 400000
</IfModule>


Contoh lain dengan mengecilkan semua parameter seperti berikut

<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    MaxClients          256
    MaxRequestsPerChild   0
</IfModule>
<IfModule mpm_worker_module>
    StartServers          2
    MinSpareThreads      20
    MaxSpareThreads      60
    ThreadLimit          16
    ThreadsPerChild       5
    MaxClients          256
    MaxRequestsPerChild   0
</IfModule>
<IfModule mpm_event_module>
    StartServers          2
    MaxClients          256
    MinSpareThreads      20
    MaxSpareThreads      60
    ThreadLimit          16
    ThreadsPerChild       5
    MaxRequestsPerChild   0
</IfModule>


[edit] Saran Lain

Beberapa kondisi overload mungkin juga tidak mungkin ditangani menggunakan teknik di atas. Untuk itu mungkin ada baiknya menggunakan http accelerator atau squid yang dikonfigurasi sebagai reverse proxy.


[edit] Referensi

[edit] Pranala Menarik

Personal tools