Ganti server adalah solusi praktis yang tidak solutif untuk kasus server web lambat jika tidak didasari dengan argumen bahwa server memang sudah tidak mampu lagi menangani pemintaan. Langkah apa yang perlu dilakukan untuk mengetahui bahwa server memang sudah tidak mampu lagi menangani permintaan?
Daftar Isi
Mengganti Server Bukan Satu-satunya Solusi Untuk Server Web Lambat
Server web lambat bisa terjadi karena banyak faktor, tidak hanya karena server sudah tidak kuat atau karena terjadi masalah aplikasi web server (apache2, nginx, php dan lain-lain). Selidiki dulu sebelum memutuskan mengganti dengan server yang baru.
— Server Web Lambat, Ganti Server Baru?
Log dan perangkat monitoring adalah petunjuk utama yang dapat digunakan untuk menjadi seorang Sherlock Holmes, Hercule Poirot, Miss Marple, Conan Edogawa atau Kogoro Akechi dalam memecahkan kasus lambatnya server. Perangkat monitoring antara lain htop, task manager, mysql query browser dan sebagainya.
Letak permasalahan bisa di sisi source code, aplikasi web server, aplikasi database, sistem operasi, jaringan dan perangkat keras server.
Penggunaan CPU (prosesor) yang masif
Penggunaan CPU yang masif bisa terjadi karena:
- Kesalahan pemrograman, terutama looping (while, for, loop, repeat dan sejenisnya)
- Menahan banyak antrian proses. Hal tersebut dapat terjadi pada kasus:
- Query yang lambat menyebabkan locking pada database
- Penggunaan Synchronous transaction pada database, disarankan mengaktifkan fitur tersebut terutama untuk transaksi keuangan/perbankan, tetapi dapat menggunakan asynchronous transaction (pgsql: synchronous_commit = off, mysql: innodb_flush_log_at_trx_commit = 2)
- Salah memilih teknologi aplikasi server, misalnya:
- jika pada Apache2 menggunakan MPM Prefork padahal relatif lebih efektif menggunakan MPM Event
- menggunakan PHP padahal relatif lebih efektif menggunakan PHP-FPM
- Benar memilih teknologi aplikasi server tetapi salah memberikan pengaturan, misalnya sebenarnya server mampu menangani 1000 permintaan, tetapi diatur hanya menangani 100 permintaan. Biasanya dasar dari pengaturan ini adalah besarnya RAM, dengan rumus <Total RAM> dibagi dengan <rata-rata penggunaan RAM per proses>. Belum tentu tips pengaturan di internet langsung cocok dengan server kita (klik untuk membuka contoh pengaturan).
Penggunaan RAM yang kurang optimal atau melebihi batas
Penggunaan RAM yang kurang optimal atau melebihi batas dapat mengakibatkan penumpukan antrian yang berimplikasi pada besarnya penggunaan CPU (prosesor). Hal tersebut dapat terjadi pada kasus:
- Tidak memaksimalkan index database (foreign key, index)
- Ukuran database lebih besar daripada ukuran RAM, jika tidak ada index pada database. Beberapa engine database akan menggunakan RAM untuk memproses database secara keseluruhan jika ukuran database lebih kecil dari RAM, sehingga tidak memerlukan index
- Pengaturan buffer/cache yang kurang atau berlebih
- Tidak menggunakan tools cache. Gunakan cache semacam opcache, memcached dan sejenisnya
Batasan Sistem Operasi
Server lambat juga dapat disebabkan oleh batasan atau pengaturan pada sistem operasi antara lain
- Batas kemampuan memori sebelum dipindah ke Virtual Memory / Swap terlalu kecil, misalnya swappiness memiliki nilai default 60 dan dapat diganti dengan 5
- Jumlah file yang dapat dibuka terlalu kecil. Pengaturan ini terkadang juga ada di sisi aplikasi, tidak hanya di sistem operasi
- Tidak menggunakan Sistem Operasi khusus server
Semakin optimal penggunaan RAM, maka proses semakin cepat dan antrian dapat dihindari, sehingga penggunaan CPU tidak masif. Jika penggunaan RAM sudah optimal, tetapi server web masih lambat, maka penggantian server adalah opsi yang rasional.
Informasi di atas dapat digunakan untuk mencari tahu apakah server perlu diganti atau tidak?
Jangan hanya fokus pada source code dan aplikasi server web (apache2, nginx dan sejenisnya) saja. Temukan penyebab utama permasalahan melalui log atau perangkat monitoring.
Demikian, semoga bermanfaat. [bst]