29 August 2005

Detik Effect!

Posted under: at 12:48

Ini masih berhubungan dengan hiruk pikuk sHa, tetapi kali ini saya tidak ingin membicarakan polemik tentang sHa.

Hari Jumat kemarin seusai shalat Jumat seperti biasa saya mengecek beberapa hal di Internet, salah satunya adalah blog ini. Namun karena sesuatu hal blog ini tidak bisa diakses. Setelah login ke server, saya mengetahui ternyata beban server sangatlah tinggi.

06:16:12 up 30 days, 12:35, 4 users, load average: 164.90, 150.41, 106.87

Setelah melakukan login ke IM, saya diberitahu bahwa situs web saya masuk halaman depan Detikcom! Pantas saja beban server jauh lebih tinggi daripada biasanya. Artikel Detikcom tersebut membahas mengenai tulisan saya mengenai kontroversi sHa.

Kejadian seperti ini populer di kalangan techie sebagai Slashdot effect. Slashdot effect adalah efek yang ditimbulkan akibat sebuah situs yang sangat populer (biasanya situs Slashdot.org) membuat taut ke situs lain yang tidak populer. Taut tersebut akan mengirimkan sangat banyak pengunjung ke situs yang tidak populer tersebut. Karena biasanya situs yang tidak populer tidak mempersiapkan dirinya untuk menerima banyak hit, maka situs tersebut akan menjadi sangat sulit untuk diakses. Istilah Slashdot effect pertama kali dipopulerkan oleh situs Slashdot.org.

Sebelumnya saya pernah beberapa kali menyaksikan Slashdot effect ini berlangsung. Yaitu ketika hasil wawancara Hans Reiser oleh Steven Haryanto dimuat Slashdot. Selain itu juga sewaktu Slashdot memuat artikel yang membahas SkyOS paling tidak sebanyak dua kali (1, 2). Artikel Steven tersebut tidak sempat membuat server saya kewalahan karena hanya terdiri dari satu lembar halaman HTML. Sedangkan taut ke SkyOS.org membuat server kewalahan karena situs SkyOS.org dinamis dan penuh dengan tangkapan layar (screenshot).

Karena kali ini situs Detikcom yang menyebabkan pengunjung berbondong-bondong menuju situs web saya, beberapa teman menamai fenomena ini Detik effect.

Karena Detik effect ini, situs web saya tidak dapat diakses selama kurang lebih satu jam. Untuk mengatasinya saya terpaksa memasang berkas index.html untuk ‘menyapa’ pengunjung dengan pesan:

Maaf, saya sedang dipijat karena kecapean melayani pengunjung dari detikcom. Silakan kembali lagi dalam 3 jam setelah saya segar bugar. :)

Tertanda, server priyadi.net

‘Pesan’ ini akan terlihat jika pengunjung masuk langsung ke halaman utama blog saya. Sedangkan pengunjung yang masuk ke artikel dari mesin pencari atau pelanggan RSS feed akan tetap dapat membaca tulisan-tulisan saya. Saya terpaksa melakukan hal ini karena pada server yang sama juga terdapat situs-situs lain, termasuk situs kantor saya.

Baru pada sore hari saya dapat menemukan penyebab utama mengapa server saya tidak dapat menangani Detik effect. Penyebabnya adalah plugin IP to Country buatan saya. Plugin ini berfungsi untuk mendeteksi asal negara pembuat komentar. Masalahnya plugin ini bekerja dengan mengeksekusi query SQL tanpa menggunakan indeks, dan itu dikerjakan pada setiap komentar. Sedangkan tulisan saya tersebut sudah memiliki puluhan komentar dan meningkat tajam sampai lebih dari 200 komentar. Setelah menonaktifkan plugin ini, server saya dapat dengan mudah menangani Detik effect yang sudah melewati puncaknya pada siang hari.

Berdasarkan pengamatan saya, Detik effect tidak sedahsyat Slashdot effect. Penyebab utamanya mungkin adalah bahwa pengunjung Slashdot memang jauh lebih banyak daripada Detikcom.

Detik vs Slashdot

Selain itu Detikcom tidak membuat taut ke situs web saya sehingga pengunjung tidak dapat langsung mengklik untuk menuju situs web saya. Sebagian besar pengunjung juga tidak dapat melakukan copy-paste URL karena Detikcom mematikan fungsi tersebut melalui Javascript. Pengunjung hanya dapat mengetikkan URL priyadi.net pada browser-nya atau mencari topik tersebut melalui mesin pencari seperti Google.

Pada puncaknya, Detik effect yang saya alami hanya mengakibatkan hit meningkat sebanyak 4-5 kali lipat daripada biasanya. Sedangkan Slashdot effect yang pernah saya alami mengakibatkan hit meningkat sampai kurang lebih 20 kali lipat. Variabel yang meningkat tajam hanyalah beban server yang meningkat sampai 40 kali lipat biasanya dan mengakibatkan server menjadi tidak responsif. Ini disebabkan oleh query SQL yang tidak optimal pada plugin IP to Country. Untuk memperbaiki plugin ini, saya harus mengimplementasikan sistem caching dengan menggunakan indeks untuk meringankan beban server.

Sebagai informasi, spesifikasi server adalah:

  • Prosesor Intel® Celeron® 2400 (cache 128 KB, Bogomips 4800-an)
  • Memori 1 GB dengan swap 2 GB
  • Harddisk 2x40GB
  • Sistem operasi RedHat Enterprise Linux 3, kernel 2.4.21

Di bawah ini adalah grafik dari beberapa variabel server. Perhatikan peningkatan pada hari Jumat.

VMstat

HTTP connection count

Netstat

MySQL threads

MySQL queries

MySQL throughput

Load average

IOstat

CPU usage

57 Responses

Trackback: Use this URI to trackback this entry. Use your web browser's function to copy it to your blog posting.

Comment RSS: You can track conversation in this page by using this page's Comments RSS (XML)

Gravatar: You can have a picture next to each of your comments by getting a Gravatar.

Leave a Comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Warning: Comments carrying links to questionable sites will be removed!