Detik Effect!

Ini masih berhubungan dengan [hiruk pikuk sHa](https://priyadi.net/archives/2005/08/25/fakta-mengenai-natasha-anya-dipertanyakan/), 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](http://jkt2.detiknews.com/indexfr.php?url=http://jkt2.detiknews.com/index.php/detik.read/tahun/2005/bulan/08/tgl/26/time/115711/idnews/429725/idkanal/10)! Pantas saja beban server jauh lebih tinggi daripada biasanya. Artikel Detikcom tersebut membahas mengenai [tulisan saya mengenai kontroversi sHa](https://priyadi.net/archives/2005/08/25/fakta-mengenai-natasha-anya-dipertanyakan/).

Kejadian seperti ini populer di kalangan *techie* sebagai [*Slashdot effect*](http://en.wikipedia.org/wiki/Slashdot_effect). *Slashdot effect* adalah efek yang ditimbulkan akibat sebuah situs yang sangat populer (biasanya situs [Slashdot.org](http://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](http://slashdot.org).

Sebelumnya saya pernah beberapa kali menyaksikan *Slashdot effect* ini berlangsung. Yaitu ketika hasil [wawancara Hans Reiser](http://slashdot.org/developers/01/05/23/1321250.shtml) oleh [Steven Haryanto](http://people.masterwebnet.com/steven/) dimuat Slashdot. Selain itu juga sewaktu Slashdot memuat artikel yang membahas [SkyOS](http://www.skyos.org) paling tidak sebanyak dua kali ([1](http://developers.slashdot.org/article.pl?sid=01/10/05/165212&tid=156&tid=8), [2](http://developers.slashdot.org/article.pl?sid=01/10/18/2023216&tid=99&tid=8)). 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](https://priyadi.net/archives/2005/02/25/wordpress-ip-to-country-plugin/) 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](http://www.alexa.com/data/details/traffic_details?&range=6m&size=medium&y=r&url=detik.com#top) 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](http://www.google.co.id).

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](https://priyadi.net/archives/2005/02/25/wordpress-ip-to-country-plugin/). 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](http://www.redhat.com), 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 comments

  1. Pengunjung /. jauh lebih banyak dari Detik.com jadi dampak badai yang ditimbulkan lebih besar.

    Nah sekarang jika Priyadi.net menyebut taut Detik.com, apakah cukup untuk menimbulkan “Efek Priyadi.net” di sana? ;)

  2. Klo dari sisi browser yg gue alamin, buka komentar yg banyak itu fungsi scratch(?) dari setiap komentar, it tuh, jadi komentar yg lebar akan muncul slide bar, klo 50an komentar masih lancar, giliran 200 lebih komen, mengganggu juga ternyata :))

    btw, jadi ada alasan tuh buat naekin spek processor :))

  3. hehehe, saya sudah kebagian SPMB Effect di awal bulan lalu *gara-gara fajri*. tapi tak separah Detik Effect, apalagi /. Effect.

  4. Hm…pantesan, saat saya mau kasih liat permalink tentang keberadaan Sha ke calon istri saya, mendadak browser macet ditengah jalan dan tidak bisa meload page tsb. Saya pikir, tumben…apakah karena terlalu banyak comment? Rasanya nggak juga…ternyata ;)

  5. Eh gw pernah tu iseng2 mengoptimasi struktur db yg ip-to-country ini. Entah masih ada ato ngga, soalnya gw tinggal di database di server kampus. Kalo inget n masih ada n kalo mau gw kasih deh..

  6. #15: entah ini sarkasme atau bukan. tapi saya pribadi sudah menghentikan penyelidikan tentang ini. bukan salah saya kalau detik mengekspos situs saya. posting ini cuma observasi terhadap sesuatu yang menarik perhatian saya dan gak berhubungan langsung dengan sHa.

  7. Seperti yang diberitahu komentar no 200 di fakta mengenai natasha dipermasalahkan, di Firefox (di test di Linux dan windows), penulisan komentar menjadi lambat gara-2 comment preview. Kalo di IE, tidak ada hambatan sama sekali. spec P4 1,6, memory 128, VGA 64MB NVidia GForce2 MX400. comment preview masih mending lebih cepet dibandingkan plugin preview post. Tapi kalo komentar jumlah pemberi komentar sedikit, hambatannya ndak kerasa (kecuali kalo akhirnya nanti isi komentar dari satu pemberi komentar menjadi sangat banyak, yang kemungkinan jarang sekali).

  8. #14: kayanya hampir gak mungkin mengoptimisasi querynya, soalnya pasti tanpa index. paling2 cuma bisa di-cache, kecuali kalau mau bikin database semua IP yang ada :)

  9. #20: hmmm, harusnya sih gak ada hubungannya antara banyak komentar dan lambatnya comment preview.

    nah, kalau banyaknya komentar berhubungan dengan lambatnya loading page, terutama kalau ada plugin IP to country.

  10. Nah kalo ketika gw buka blog-nya mas pri pake si rubah geni (FF) trus ada flicker itu knp ? Gw dah konfirm ke bbrp temen mrk juga ngalamin hal yg sama.
    Dan beberapa kali isi comment dari beberapa komentator hilang.. biasanya comment awal sampe tengah.
    Mohon pencerahan.. :)

  11. #24 iya mas betul, sering ngeflick gitu,biasanya pas awal mbuka, flickernya tulisan header paling atas sendiri itu (text : priyadi)

    kalo komen disini, kena priyadi effect gak ya? :D

  12. #22 Stelah diinget2 lg, tnyata gw kayanya cm membuat lbh compact aja deng. Hehe..

    Ttg comment preview, emang kayanya suka kedapkedip n jd lambat kalo buka page nya

  13. #26: heran ini flicker dari mana ya. mungkin karena prosesor saya termasuk kencang jadi flickernya gak terlalu kelihatan?

    #28: belum sempet :)

  14. Mengomentari soal flicker di Google Adsense, sepertinya tidak terjadi di blog ini saja. Beberapa kali saya pernah melihat kasus yang sama di situs lain.

  15. untung blog saya(server33) ndak satu pc dgn blog juragan pri, kalau ndak bisa kena imbasnya juga, tapi keknya IG oke2-oke aja tuh, kita tunggu effect-effect selanjutnya…:d

  16. Setuju tuh sama er… nomer berapa tadi? Ya pokoknya memang sudah waktunya ganti server. Celeron sudah jauh ketinggalan zaman tuch (gara – gara cache-nya yang memang kecil dan ga bisa memfasilitasi request dalam jumlah besar).

    Mending ganti sama AMD64, masih murah meriah bo! :)>-

  17. #43: Hnah… ini justru engga wajar… masa sih satu server isinya cuma 24 situs…? Minimal buat BEP tuh butuh minimal 50-an situs (ini juga tergantung sih bayarnya berapa dan gede situsnya) Huehehehe :d

  18. Kayak situsnya mas Pri ini harusnya sudah pake paging di comentnya. Karena kalau sudah ratusan, berat juga dibuka.

    Btw gara-gara comment di sini dapet juga priyadi effect :D meski cuman 4 hit.

Leave a Reply to Ozzie Cancel reply

Your email address will not be published. Required fields are marked *