Tuning Optimasi Server untuk CBT/LMS
Pada postingan kali ini saya ingin berbagi tutorial bagaimana Tuning/Optimasi Server untu CBT/LMS agar performanya baik atau tidak lemot diakses secara bersamaan oleh banya siswa/user/peserta ujian.
Ceritanya saya disuruh membantu untuk menyetingkan VPS yang disewa oleh sebuah sekolah untuk kegiatan Penilaian/Asesmen kurang lebih 500 siswa secara bersamaan. VPS yang digunakan memiliki spek CPU 4 Core, RAM/Memori 8.
Cara Optimasi Server CBT |
Aplikasi yang dipakai adalah Garuda CBT, namun saya yakin ini juga berguna jika menggunakan aplikasi lain.
Awalnya sudah yakin menggunakan VPS dengan spek tersebut akan bisa menghandle
500 siswa secara bersamaan, namun ternyata masih lemot dan kadang error.
Padahal jika dilihat dari penggunaan CPU dan RAM tidak sampai 25%.
Karena
masih pemula saya juga bingung mengapa demikian, namun tanya oleh penyedia
dijawab apakah sudah dioptimasi? Karena ini VPS maka biasanya penyedia tidak
mau membantu seting paling hanya di kasih link-link referensi panduan.
Akhirnya saya menemukan sebuah video youtube yang berjudul "Tuning Xampp Performance, meningkatkan kinerja Apache dan MySQL untuk CBT/LMS"
Lha kok XAMPP? padahal yang akan saya seting VPS.
hmmm ya...sama sama ada Apache dan MySQL tentu akan sama lah... hehe
Namun sebelum lanjut perlu diklaimer dulu. Dengan menerapkan langkah-langkah yang akan saya share, Anda dapat meningkatkan performa server Apache dan MySQL. Tetaplah memantau kinerja server secara berkala dan terus mencari cara untuk meningkatkan efisiensi dan responsivitasnya.
Ketikan perintah htop untuk melihat penggunaan CPU dan RAM
Disini saya akan mengikuti yang ada dalam video tutorial tersebut, namun untuk angka-angka akan saya sesuaikan sendiri.
Optimasi MySQL
Dari referensi yang saya dapatkan dari sebuah chanel youtube untuk Optimasi MYSQL penggunaan innodb buffer tidak boleh melebihi dari 50% ruang memori yang tersedia (Free RAM).
Supaya aman gunakan 10-20% saja dari total RAM karena RAM masih digunakan untuk apache, dan aplikasi lainnya.
innodb_buffer_pool_size
Jika tipe/jenis databasenya inobdb cari bagian innodb_buffer_pool_size
key_buffer
Apabila database nya MyIsam rubah key_buffer
contoh: 1GB = 1024MB, 2GB = 2048MB, 4GB = 4096MB, 8GB = 8192MB, 16GB = 16384MB
Caranya masuk ke WHM kemenu "SQL Services" --- "Edit SQL Configuration"
Ubang angka pada InnoDB Buffer Pool Size (innodb_buffer_pool_size) sesuai kapasitas yang tersedia di sini saya mengis 2GB atau 2147483648 Bytes
The size in bytes of the buffer pool. The buffer pool is the memory area where InnoDB caches table and index data
Ukuran dalam byte kumpulan buffer. Kumpulan buffer adalah area memori tempat InnoDB menyimpan tabel dan data indeks
InnoDB Buffer Pool Size adalah parameter konfigurasi yang digunakan dalam pengaturan database MySQL. Fungsi utamanya adalah untuk menentukan seberapa besar memori yang akan dialokasikan oleh InnoDB untuk menyimpan data dan indeks yang dimuat ke dalam memori. Secara khusus, InnoDB Buffer Pool berperan sebagai cache di dalam memori untuk menyimpan data yang sering diakses, sehingga dapat mempercepat kinerja database dengan mengurangi jumlah akses ke penyimpanan disk yang lebih lambat.
Dengan mengatur Buffer Pool Size dengan benar, Anda dapat meningkatkan kinerja keseluruhan database dengan meminimalkan ketergantungan pada disk I/O. Namun, pengaturan yang tidak tepat bisa berdampak negatif terhadap kinerja. Sebagai contoh, jika ukuran Buffer Pool terlalu kecil, database mungkin akan sering melakukan akses ke penyimpanan disk, yang dapat mengurangi kinerja keseluruhan. Di sisi lain, mengalokasikan terlalu banyak memori untuk Buffer Pool juga dapat menyebabkan kurangnya memori yang tersedia untuk aplikasi lain di server.
Jadi, dalam rangka meningkatkan kinerja dan efisiensi database, penting untuk memahami dan menyesuaikan ukuran InnoDB Buffer Pool sesuai dengan kebutuhan aplikasi dan kapasitas server yang tersedia.
innodb_log_file_size adalah 15-25% nya dari innodb_buffer_pool_size
max_allowed_packet isikan sesuai ukuran backup yang akan direstrore
innodb_log_buffer_size buat 16 MB
Optimasi Apache
Untuk optimasi Apache silahkan masuk menu "Software" ---"MultiPHP INI Editor" pilih versi PHPyang digunakan
max_execution_time batas waktu untuk eksekusi php
This sets the maximum time in seconds a script is allowed to run before it is terminated by the parser. This helps prevent poorly written scripts from tying up the server. The default setting is 30.
Ini menetapkan waktu maksimum dalam detik skrip diizinkan untuk dijalankan sebelum dihentikan oleh parser. Ini membantu mencegah skrip yang ditulis dengan buruk mengikat server. Pengaturan default adalah 30.
Fungsi dari `max_execution_time` adalah untuk menentukan batas waktu maksimum yang diperbolehkan untuk eksekusi sebuah skrip atau proses dalam sebuah lingkungan pemrograman, seperti PHP. Ketika nilai `max_execution_time` tercapai, eksekusi skrip atau proses akan dihentikan secara otomatis oleh interpreter atau server web.
Penyetelan `max_execution_time` penting untuk mengontrol kinerja dan keamanan aplikasi. Tanpa batasan waktu, sebuah skrip atau proses yang mengalami masalah atau terjebak dalam perulangan tak terbatas dapat menyebabkan penggunaan sumber daya yang berlebihan dan bahkan dapat menyebabkan server menjadi tidak responsif atau mati. Dengan membatasi waktu eksekusi, kita dapat memastikan bahwa skrip atau proses yang terjebak tidak menyebabkan dampak negatif pada kinerja atau ketersediaan server.
Pengaturan `max_execution_time` juga dapat digunakan sebagai langkah keamanan untuk melindungi server dari serangan yang bertujuan untuk menyebabkan penyalahgunaan sumber daya dengan cara menjalankan skrip atau proses yang berlarut-larut.
Dalam praktiknya, nilai `max_execution_time` harus dipilih dengan hati-hati untuk memastikan bahwa cukup waktu diberikan kepada skrip atau proses untuk menyelesaikan tugasnya, tetapi juga cukup singkat untuk mencegah penyalahgunaan sumber daya atau skrip yang mengalami kesalahan tanpa batas.
max_input_time
max_input_vars
This sets the maximum number of input variables allowed per request and can be used to deter denial of service attacks involving hash collisions on the input variable names.
Ini menetapkan jumlah maksimum variabel input yang diizinkan per permintaan dan dapat digunakan untuk mencegah penolakan serangan layanan yang melibatkan tabrakan hash pada nama variabel input.
`max_input_vars` adalah sebuah pengaturan pada konfigurasi PHP yang menentukan jumlah maksimum variabel yang dapat diterima oleh server dalam satu request HTTP. Variabel-variabel ini dapat berupa variabel GET, POST, atau COOKIE.
Fungsi dari `max_input_vars` adalah untuk mengendalikan jumlah maksimum data yang dapat dikirimkan melalui formulir HTML atau melalui URL dalam satu request. Hal ini penting untuk menghindari serangan Denial-of-Service (DoS) atau serangan serupa di mana sejumlah besar variabel dikirimkan ke server dalam satu waktu, yang dapat menyebabkan server kelebihan beban atau bahkan menyebabkan kegagalan server.
Dengan mengatur nilai `max_input_vars`, kita dapat membatasi jumlah variabel yang dapat diterima oleh server, sehingga memperkuat keamanan dan stabilitas server. Nilai yang disetel harus dipertimbangkan secara hati-hati untuk memastikan bahwa cukup untuk kebutuhan aplikasi, tetapi tidak terlalu besar sehingga memungkinkan penyalahgunaan sumber daya atau serangan yang merugikan.
memory_limit 25% dari total RAM
This sets the maximum amount of memory in bytes that a script is allowed to allocate. This helps prevent poorly written scripts for eating up all available memory on a server. Note that to have no memory limit, set this directive to -1
Ini menetapkan jumlah maksimum memori dalam byte yang diizinkan untuk dialokasikan oleh skrip. Ini membantu mencegah skrip yang ditulis dengan buruk untuk menghabiskan semua memori yang tersedia di server. Perhatikan bahwa untuk tidak memiliki batas memori, atur direktif ini ke -1
Fungsi dari `memory_limit` adalah untuk menetapkan batasan maksimum penggunaan memori yang dapat digunakan oleh skrip PHP selama eksekusi. Ketika skrip melebihi batas ini, PHP akan menghentikan eksekusi skrip dan menghasilkan pesan kesalahan seperti "Fatal error: Allowed memory size of xxx bytes exhausted".
Penetapan batasan memori sangat penting dalam mengelola sumber daya server. Tanpa batasan yang tepat, skrip PHP yang mengonsumsi memori secara berlebihan dapat mengakibatkan penggunaan memori yang berlebihan dan menyebabkan server menjadi tidak responsif atau bahkan crash.
Dengan mengatur `memory_limit`, administrator server dapat mengontrol seberapa banyak memori yang dapat digunakan oleh setiap skrip PHP, menjaga stabilitas dan kinerja server secara keseluruhan. Nilai `memory_limit` harus dipilih dengan hati-hati untuk mencocokkan kebutuhan aplikasi, memastikan bahwa cukup memori tersedia untuk menjalankan skrip, tetapi tidak terlalu besar sehingga memungkinkan penyalahgunaan sumber daya.
post_max_size untuk keperluan upload
upload_max_filesize
Sumber reverensi:
Optimasi Laragon
Banyak sekarang yang beralih dari XAMPP ke Laragon dengan beberapa alasan. Namun disini saya tidak akan membahasan tentang itu. Saya share menu mana yang harus dibuka untuk optimasi server CBT/LMS
Klik kanan kemudian pilih "PHP" --- "php.ini"
max input var
Akhir Kata
Demikianlah cara saya Cara tuning optimasi server MySQL dan Apache PHP untuk CBT/LMS agar performanya lebih baik.
Posting Komentar
2. Semua komentar kami baca, namun tidak semua dapat dibalas harap maklum.
3. Beri tanda centang pada "Beri tahu saya" untuk pemberitahuan jika komentar Anda telah kami balas.