Apache: Mengatasi Overload

From OnnoWiki
Jump to navigation Jump to search

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


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.

Solusi

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

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>


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.


Referensi

Pranala Menarik