Optimasi MySQL untuk Mengatasi Traffic “Gila”
Dengan adanya traffic yang cukup banyak sebenarnya sangat menggembirakan bagi siapa saja termasuk saya. Bagaimana tidak senang, traffic itu kan identik dengan uang
. Kalau istilah umumnya waktu adalah uang, mungkin di pebisnis Internet menjadi traffic adalah uang
). Keadaan ini tidak hanya menghasilkan kesenangan karena pendapatan meningkat namun juga kepusingan karena server web maupun server database MySQL seringkali mati. Bila sudah terjadi hal seperti ini, saya selalu menganalisa aktivitas server dengan perintah “top”, server manakah yang memakan resource CPU maupun memory yang paling tinggi. Bila sudah memperhatikan beberapa saat barulah saya dapat menentukan server mana yang harus dioptimasi untuk menurunkan tingkat penggunaan resource yang terlalu besar.
Load CPU oleh MySQL terlalu Besar
Bila hal ini yang terjadi, saya akan “menyetel” konfigurasi my.cnf tentunya tetap dengan memperhatikan spesifikasi server sehingga “setelan” nya tidak malah membebani resource lain (memory/RAM). Contoh-contoh “setelan” my.cnf biasanya sudah disediakan oleh MySQL di folder /usr/share/doc/mysql-server-5.0/examples/, kebetulan saya menggunakan Ubuntu, mungkin untuk beberapa distro Linux memiliki kesamaan alamat folder tersebut. Hati-hati bila kapasitas RAM anda tidak terlalu besar, misal hanya 512MB. Sebaiknya gunakan contoh my-medium.cnf dan jangan menggunakan setelan my-large.cnf, meskipun setelan my-medium.cnf ini ditujukan untuk memory 32-64MB namun itu pun sudah akan memakan memory yang lebih dari 64MB. Namun bila anda masih kurang puas, anda dapat meningkatkan beberapa variabel ke tingkat yang lebih tinggi (bandingkan dengan setelan my-large.cnf).
Variabel-variabel yang dapat dinaikkan levelnya untuk RAM 512MB, yang di dalam server masih terdapat server-server lain (Web, DNS, Mail) selain MySQL adalah:
key_buffer = 128M
table_cache = 128
sort_buffer_size = 768K
read_buffer_size = 512K
read_rnd_buffer_size = 1M
[isamchk]
key_buffer = 64M
sort_buffer_size = 64M
read_buffer = 2M
write_buffer = 2M
[myisamchk]
key_buffer = 64M
sort_buffer_size = 64M
read_buffer = 2M
write_buffer = 2M
Setelan di atas yang akan saya lakukan untuk spesifikasi RAM server 512MB. Tetapi tetap perlu diingat bahwa pengawasan terhadap server tetap diperlukan, karena mungkin saja konsumsi RAM oleh MySQL ternyata harus berebut dengan service lain. Jika kondisinya seperti itu, maka perlu diturunkan beberapa variabel di atas sehingga server benar-benar dalam keadaan stabil.