3‐Masalah Umum - lindduncoding/database-bsb GitHub Wiki
Masalah System Load
Jika perangkat server yang dipilih merupakan perangkat dengan spesifikasi minimum, maka masalah ini merupakan masalah yang akan sering muncul. Walaupun begitu, solusinya cukup sederhana dan cara mendeteksinya pun mudah.
Ciri-ciri Server Mati (karena system load)
- Ketika diakses menggunakan alamat IP dan port akan memberikan respon
Internal Server Error
. - Ketika diakses menggunakan SSH koneksi terputus secara prematur dengan pesan error
kex_exchange_identification: read: Connection reset by peer
. - Ketika dilakukan IP scanning, alamat IP server tidak muncul atau muncul tetapi dengan status INACTIVE HOST.
- Tanda-tanda fisik seperti perangkat yang panas atau lampu indikator tidak menyala.
Solusi
- Force restart server dengan menekan tombol power untuk dimatikan kemudian tekan lagi untuk dinyalakan. Bisa juga dengan mencabut kabel power server (tidak direkomendasikan)
- Tunggu beberapa saat hingga alamat IP server kembali muncul dan berstatus ACTIVE berdasarkan laporan IP Scanning.
- Lakukan koneksi SSH ke server, kemudian jalankan kembali perintah
nohup
.
Untuk langkah ketiga, jika server mampu, daftarkan layanan uvicorn/FastAPI ke entri
systemd
Ketika server mati lagi, ia akan secara otomatis menjalankan kembali layanan tersebut seperti layanan MariaDB yang otomatis menyala lagi jika server terganggu.
Masalahnya, pendafataran layanan menggunakan
systemd
memakan resource server yang lumayan banyak sehingga untuk pemasangan pada perangkat dengan spesifikasi minimum solusi ini TIDAK direkomendasikan.
Pencegahan
- Ketahui kemampuan server, jangan jalankan lebih dari 1 aplikasi secara bersamaan.
- Upgrade server :D
Di sisi lain, server bisa saja masih aktif tetapi router tidak menyala sehingga server berada pada status offline. Apapun masalahnya, jika akar permasalahan adalah server atau router yang mati, solusinya cukup sederhana yaitu lakukan restart.
Masalah Database
Can't connect to MySQL instance
Ada beberapa kemungkinan, seperti layanan mariadb
yang belum berjalan atau masalah keamanan. Untuk memastikan lakukan hal berikut:
- Jalankan perintah
sudo systemctl status mariadb
untuk melihat status MariaDB. Jika tidak menunjukkan status ACTIVE, maka jalankan ulang database MariaDB dengan perintahsudo systemctl start mariadb
. - Cek konfigurasi MariaDB, terutama opsi
bind-address
. Pastikan MariaDB dikonfigurasi untuk mendengarkan SEMUA alamat (0.0.0.0). - Cek aturan firewall, terutama pada port
3306
dengan perintahsudo netstat -tulnp
. Perhatikan output seperti berikut:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1234/mariadb
Jika tidak terdapat output seperti di atas maka database MariaDB belum diperbolehkan firewall untuk menerima request dari port 3306
.
Terakhir, cek aturan keamanan database. Perhatikan langkah pembuatan user MariaDB saat instalasi database. Pastikan username, password, alamat client (source destination) cocok dengan aturan keamanan yang telah dibuat.
CREATE USER '[username]'@'192.168.0.%' IDENTIFIED BY '[password]';
Jika konfigurasi alamat IP berubah sehingga menyebabkan alamat client dan server tidak berada di jangkauan alamat yang diatur ketika membuat akun MariaDB, lakukan SSH ke server untuk mengakses MariaDB sebagai root, kemudian lakukan ALTER USER.
Masalah HTTP
Unauthorized (401)
- Pastikan sudah login dengan berhasil sebelum mengakses fitur lain.
- Jika ingin melakukan testing backend endpoint menggunakan
curl
atau Postman, jangan lupa memberikan headerAuthorization: Bearer [Token]
untuk setiap request HTTP yang dibuat. - Direkomendasikan untuk menggunakan endpoint /docs bawaan FastAPI untuk melakukan testing backend endpoint.
Internal Server Error (500)
Ada beberapa kemungkinan, seperti server yang mati atau kesalahan logika pada backend/frontend. Untuk memastikan, lakukan hal berikut:
- Akses server menggunakan SSH. Jika gagal, berarti server mati. Nyalakan kembali dan tunggu beberapa saat.
- Navigasi ke folder
database-bsb
menggunakan perintahcd database-bsb/app
. - Baca
output.log
menggunakan perintahcat output.log
dan lihat apakah ada error yang berkaitan dengan Python, MariaDB, atau HTML. - Jika
output.log
tidak memberikan tanda-tanda anomali, cek apakah layanan masih berjalan menggunakan perintahtop
. Cari proses yang memiliki namauvicorn
. Jalankan ulang perintahnohup
jika tidak ditemukan adanya prosesuvicorn
yang berjalan.