Tech Talk: Optimasi dan Tuning Server

Sekali-kali ngomongin pekerjaan ya? Biar blog ini lebih nampak serius (*hayah*). Maka perkenankanlah saya menulis tech talk. Oh iya, tulisan ini juga dimuat di studewo.com.

Salah satu masalah yang kami hadapi saat ini adalah semakin melambatnya sistem, terutama di saat beban puncak di jam-jam tertentu. Sebenarnya kami sudah memiliki server yang cukup powerful, namun ternyata itu saja tidak cukup. Lalu kami pun berdiskusi dengan salah seorang konsultan sistem. Setelah berdiskusi dengan beliau, kami pun menganalisa sistem bersama tim.

Optimasi server

Kita perlu mengoptimasi peletakan beberapa folder sistem di partisi terpisah. Itu pun perlu diurutkan dengan mempertimbangkan harddisk mekanis yang memiliki kecepatan tertinggi dengan metode sequential. Partisi yang perlu dibuat dengan urutan: system, home, DB (khusus), var, swap.

Tentu hal ini tidak berlaku jika menggunakan SSD, karena SSD tidak memiliki komponen mekanis. Lebih lanjut, berdasarkan pengalaman, perlu ditentukan penggunaan RAID yang paling cepat dan aman. Tempo hari kami berhasil mengkonfigurasikan RAID50 yang kecepatannya 2x konfigurasi RAID5 biasa.

Tuning Database Server

Kami mendapatkan masukan untuk men-tuning database server (MySQL) dengan mengubah-ubah variabel di file konfigurasi sesuai kebutuhan. Ternyata memang berpengaruh cukup besar. Selama ini kami hanya menggunakan konfigurasi standar instalasi MySQL.

Selain itu kami juga mengaktifkan log untuk slow query sehingga kami bisa mendapatkan query apa saja yang dieksekusi dengan lambat.

Analisa Slow Query

Setelah log slow query diaktifkan, kami jadi tahu query apa saja yang dieksekusi dengan lambat oleh server database. Setelah kami analisa, rupanya ada beberapa masalah, yaitu:

1. Join yang terlalu banyak
2. Data yang diambil terlalu banyak
3. Penggunaan index yang tidak optimal
4. Penggunaan tipe field yang tidak efisien

Metode Pemrograman untuk Membuat ID

Kami mendapat masukan dari konsultan untuk membuat ID transaksi dengan cara parno (paranoid). Caranya adalah dengan membuat sebuah tabel khusus hanya berisi nomer ID transaksi. Sebelum dilakukan transaksi baru, sistem akan mengambil nomer terakhir, menambahkan 1 dan mencoba menuliskan ke tabel tersebut. Karena ID merupakan primary key, maka jika ada user lain yang secara bersamaan telah menuliskan ID yang sama, maka proses penulisan ID baru gagal. Jika gagal, maka ulangi proses.

Jika berhasil, maka ID baru tersebut boleh digunakan untuk bertransaksi di tabel transaksi yang sebenarnya. Metode lain adalah dengan melakukan penguncian (locking) tabel untuk menghindari user lain menggunakan tabel transaksi. Tentu saja cara ini sangat tidak efisien terutama jika usernya banyak. Tentu performa aplikasi jadi lebih lambat untuk hanya sekedar membuat ID karena user lain harus menunggu seorang user yang sedang mengunci tabel.

Trapping Error

Rupanya trapping error, warning atau alert harus benar-benar diperhatikan penyebabnya. Tidak hanya di level aplikasi, tapi juga di level database server, web server dan OS server. Hiks, selama ini kami hanya konsen di level aplikasi.

Karena ternyata error-error ini memiliki kontribusi dalam melambatkan sistem jika tidak segera ditangani. Dan rupanya kami harus belajar banyak mengenai environment sistem.

Kesimpulan

Rupanya kami perlu belajar banyak. Dan ketika tips di atas dilakukan, performa sistem menjadi lebih baik. Tetapi tulisan ini belum selesai karena kami melakukan optimasi lebih lanjut di query. Nantikan lanjutannya ya?

Iklan

Tentang Emanuel Setio Dewo

Tumbuh, Berkembang, Berbuah...
Pos ini dipublikasikan di Catatan, Database, Dewo, Opini, Personal, Server, Tech Talk dan tag , , , , . Tandai permalink.

4 Balasan ke Tech Talk: Optimasi dan Tuning Server

  1. Iksa berkata:

    Mumet juga ya ngurutin elektron dan neutron berbaris rapi …

  2. Mamanya Calvin berkata:

    aku daoin aja deh kerjaannya mas dewo lancar walaupun ada error 🙂

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s