Optimisasi WordPress di Server Traffic Tinggi

awstats.gifKetika dulu IlmuKomputer.Com menggunakan html statis dan tanpa database, masalah traffic dan optimisasi server tidak terlalu terpikirkan. Masalah mulai muncul di awal Januari 2007, persisnya ketika saya putuskan IlmuKomputer.Com bermigrasi menggunakan CMS. CMS sudah saya pilih yang cukup ringan yaitu WordPress, disamping fiturnya pas terutama yang berhubungan dengan masalah sindikasi, tracking proses “creating new knowledge”, incoming/outcoming link, trackback dan pingback. Tapi ternyata ini tidak banyak menolong ketika seperti biasa 200.000 kunjungan harian (daily hits) membom server IlmuKomputer.Com. Server di datacenter Amrik ambrol dan ketika nekat nerusin hidup di suspended oleh serverhosternya 🙁

Kesempatan ini saya gunakan untuk sekalian pindah ke server di IIX, alhamdulillah beberapa rekan membantu nyumbang server dan bandwidth. Yang pertama mas Akbar Marwan (the phenomenon dari gundar) di datacenter Telkom-Jakarta, dan yang kedua mas Rizal di datacenter Bandung. Thanks untuk mas Akbar dan mas Rizal, Indonesia akan maju kalau banyak orang baik seperti anda berdua. Tapi ternyata kedua server ini ambrol juga. Server ngos-ngosan, hampir 2 hari sekali saya terpaksa bolak balik mindahin NS ke server yang hidup. Yang pasti bikin om Akbar dan om Anton sibuk berat, karena bantuin ngopeni IlmuKomputer.Com dan berkali kali mindahin backup tarbal ukuran besar 😉 Inilah mengapa IlmuKomputer.Com 2-3 minggu belakangan jarang bisa diakses dengan baik oleh rekan-rekan sekalian. Juga yang membuat ratusan email, SMS, dan message YM yang berupa komplen mampir ke laptop saya 🙁

Dari situ saya mulai mikir sepertinya sudah waktunya harus ngoprek dan mengoptimisasi server. Paling tidak ada 4 titik yang bisa dioptimisasi: Apache, MySQL, PHP dan WordPressnya sendiri. Saya pingin melakukan optimisasi di semua titik, hanya untuk ujicoba, saya coba dulu dari yang mudah. Dari yang saya lakukan di bawah, saya lihat sudah cukup signifikan membuat laju IlmuKomputer.Com menjadi cukup cepat. Ada beberapa hal lain yang sebenarnya masih pingin saya lakukan, cuman pingin sambil memonitor kondisi servernya. Thanks untuk mas Kemas yang meskipun baru balik berdjoeang di Asia Source II sudah berjibaku menemukan banyak resource tentang optimisasi WordPress.

1. OPTIMISASI MySQL

Ini awalnya Anton yang rajin ngoprek. Saya sendiri lihatnya karena yang down duluan selalu MySQL dan bukan Apachenya, jadi dari sini kita gerak. Optimisasi MySQL biasanya hanya terpusat di file /etc/my.cnf. Saya lihat yang cukup penting adalah setting variable max_connections, key_buffer dan table_cache. Setting variable lain selengkapnya seperti di bawah, beberapa nyontek dari tulisan yang ada di list referensi.

max_connections = 500
key_buffer = 256M
max_allowed_packet = 1M
table_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
myisam_sort_buffer_size = 64M
thread_cache = 8
query_cache_size = 512M

Sedangkan optimisasi table-table databasenya sendiri bisa menggunakan PhpMyadmin, khususnya fitur Optimize Table. Ada artikel menarik tentang ini di sini.

2. OPTIMISASI WORDPRESS dan PHP

Intinya saya pingin supaya tidak ada query ke database secara terus menerus di IlmuKomputer.Com. Bahasa gampangnya bagaimana membuat page yang dinamik dan banyak query ke database menjadi statik. Ini ternyata ada plugin WordPress yang bisa dipakai, namanya WP-Super-Cache. Instalasinya simple seperti plugin WordPress yang lain, dan ternyata efeknya cukup ampuh.

Teknik caching APC (Alternative PHP Cache) juga bisa digunakan. Berbeda dengan WP-Cache yang merupakan plugin WordPress, APC bisa digunakan untuk code PHP apapun karena dia perlu bermain-main langsung dengan setting php.ini

3. OPTIMISASI SCRIPT WORDPRESS

Optimasi bisa juga dilakukan ke script WordPress, misalnya dengan memperbaiki function call. Ini juga cukup menarik dilakukan, meskipun tidak se-ngefek pakai WP-Cache atau APC. Teknik ini tertulis lengkap di: http://elliottback.com/wp/archives/2006/07/27/optimizing-wordpress-performance-speed/

Teknik lain optimisasi script wordpress adalah dengan usaha mem-freeze pemanggilan $now, sehingga tidak terload berulang-ulang. Teknik ini efektif khususnya berhubungan dengan query post WordPress. Sudah ada pluginnya, bisa didownload dari http://txfx.net/code/wordpress/post-query-accelerator/ Instalasi juga sangat mudah karena tinggal upload ke /wp-content/plugins dan klik activate di menu administrasi WordPress.

4. OPTIMISASI APACHE

Optimisasi lengkap ada di http://httpd.apache.org/docs/1.3/misc/perf-tuning.html. Saya sendiri baru sempat ngoprek variable MaxClients, yang lainnya belum nyoba.

5. MIRRORING WORDPRESS

Jujur saja saya belum benar-benar paham teknik mirroring wordpress ke berbagai server. Hanya untuk mirroring wordpress dengan model P2P software, ternyata bisa pakai The Coral Content Distribution Network. Cukup menjanjikan, tapi sayangnya saya sendiri belum nyoba.

6. PENGGUNAAN SQUID

Mas Harry Sufehmi sudah menulis lengkap tentang penggunaan SQUID untuk server traffic tinggi di situsnya. Lengkap dengan implementasi untuk IlmuKomputer.Com 🙂

Yang saya tulis pasti banyak salah, karena core competence saja bukan di server tunning and optimization 😉 Tulung koreksi dan masukan dari rekan-rekan sekalian yang ahli di bidang ini. Itu dulu, maturnuwun atas perhatiannya, saya akan “kembali ke laptop” dulu.

REFERENSI:

ttd-small.jpg