Mengatasi overload Web Server Apache

From OnnoWiki
Jump to navigation Jump to search

Salah satu masalah paling besar dari Web server apache adalah konfigurasi default apache mengijinkan banyak sekali process jika banyak traffic. Dengan banyak-nya traffic mungkin memory (RAM) masih aman-aman saja. Yang akan menjadi masalah adalah cputime, mungkin setiap request akan, misalnya, memakan 0.3-5% cputime. Ini akan mengakibatkan proses menjadi terlalu lama sehingga menyebabkan timeout, refresh dan bahkan menambah banyak beban.

Solusi untuk mengatasi hal ini adalah dengan membatasi apache threads agar menjadi sangat sedikit (misalnya 16 atau kurang). Artinya, setiap request menjadi memperoleh lebih banyak cpu time.

Untuk mengimplementasi pembatasan apache threads, dapat dilakukan dengan mengedit file konfigurasi apache. File konfigurasi apache2 kemungkinan berada di

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

Turunkan semua nilai sebanyak mungkin. Menaikan 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 untuk mengatasi overload di web server apache. 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.