Berpindah dari MySQL ke SQLite
Saya pindahkan blog saya dari wordpress ke ghost, sejauh ini cukup nyaman, performa web dari lighthouse sangat memuaskan hijau-hijau, dari beberapa situ menghitung performa pun bisa dibilang oke, tapi ada satu masalah saat saya pindah ke ghost: SERVER SERING DOWN!
Loh ko bisa? itu pertanyaan saya, harusnya ngelihat kondisi yang lebih ringan dari wordpress gak seekstrim itu dong, permasalahannya ini bukan down servicenya tapi emang servernya alias instance lightsail di aws. Jadi saya gak bisa restart servicenya karena saya gak bisa ssh ke server, harus di reboot/stop manual di halaman aws. Sedih.
Default
Sebagai gambaran saya memasang ghost dengan docker compose, docker compose dari halaman docker ghost, isinya seperti ini
version: '3.1'
services:
ghost:
image: ghost:4-alpine
restart: always
ports:
- 8080:2368
environment:
# see https://ghost.org/docs/config/#configuration-options
database__client: mysql
database__connection__host: db
database__connection__user: root
database__connection__password: example
database__connection__database: ghost
# this url value is just an example, and is likely wrong for your environment!
url: http://localhost:8080
# contrary to the default mentioned in the linked documentation, this image defaults to NODE_ENV=production (so development mode needs to be explicitly specified if desired)
#NODE_ENV: development
db:
image: mysql:8.0
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
gak ada yang aneh, biasa saja, saya coba di lokal juga lancar tapi di lightsail down mulu.
sumber: https://hub.docker.com/_/ghost
Informasi Awal
Sebelum cari solusi kita cari dulu masalahnya, ternyata yang menyebabkan server lightsail sering down karena ada pembatasan penggunaan CPU, sehingga ketika penggunaan CPU naik langsung mati instancenya bukan hanya servicenya.
Bagian hijau di bawah adalah bagian aman, dan bagian oranye bagian burstable alias jika sudah terlalu tinggi instance yang digunakan die.
Percobaan pertama
Jika dilihat dari konfigurasi docker di atas saya hanya menggunakan dua container, ghost dan mysql, asumsi saya waktu itu adalah: jangan-jangan karena langsung dari ghost bikin cpu berat?. Oke saya tambahkan layer baru sebelum ghost yaitu nginx. Lalu hasilnya? Tetap DOWN!.
Percobaan kedua
Percobaan kedua adalah masih di nginx, sekarang saya tambahkan konfigurasi cache, cukup aman, masih down tapi tidak sesering awal-awal. Tapi ya tetep aja Down.
Percobaan terakhir
Percobaan terakhir adalah mengganti stacknya, yaitu mengganti MySQL keSQLite, Ghost support SQLite tapi tidak disarankan untuk production env katanya, tapi hey ini blog doang blog pribadi gak ada aneh-aneh, so, kita ganti ke SQLite. Dan kalau ini masih sering kena burst zone, mari pindah saja ke Digital Ocean atau Vultr.
Hasil
Hasilnya cukup memuaskan, saya ganti ini di hari Rabu malam dan dari Rabu malam sampai Sabtu pagi tak ada Down sama sekali, dicek di metric aws pun cpu stabil di wilayah hijau.
Dari tanggal 26 sampai sekarang stabil di bagian hijau. Tidak ada down.
Yaudah itu saja sih.