Tampilkan postingan dengan label Server. Tampilkan semua postingan
Tampilkan postingan dengan label Server. Tampilkan semua postingan

Sabtu, 26 Februari 2022

Ketidak-efisien-an Caching Dalam Bentuk File

Dua tahun terakhir ini lagi sering membuat website menggunakan public dataset. Dimana public dataset tersebut berisi setidaknya ratusan ribu baris bahkan ada yang sampai 5jt baris data. Awalnya saya menggunakan sqlite sebagai media penyimpanan, karena data nya tidak relasional dan tidak ada aktifitas penambahan data, perubahan data atau pengurangan data. Hanya aktifitas select saja, tapi ternyata sqlite bukan lah database yang cocok untuk handling data dengan jumlah besar. Dari namanya saja sudah lite. Biasanya hanya dipakai pada aplikasi-aplikasi statis dengan cakupan data yang tidak banyak. 

Akhirnya saya berpindah lagi ke mysql. Ternyata lagi2 mysql butuh resource yang lumayan jika di dalamnya terdapat data dengan jumlah yang banyak dan request bersamaan. Memori yang digunakan cukup besar dan ketika pengunjung website sudah banyak / saat mesin pencari melakukan crawl pada situs yang saya buat, performanya jadi turun. Loading website jadi lambat, dan ini tidak bagus untuk SEO. Yang mana saat ini page speed adalah salah satu ranking factor di SERP.

Berangkat dari problem tersebut akhirnya saya menggunakan sphinx-search sebagai engine pelengkap mysql. Request data tidak lagi ke mysql, namun ke sphinx-search, dimana performa seleksi data menjadi lebih cepat dan penggunaan memori yang tidak lagi tinggi. Sangat stabil dengan jumlah data yang besar. Keunggulan yang luar biasa yang dimiliki sphinx adalah fitur full text search engine, dimana engine ini sangat cepat dibanding fitur full text search bawaan mysql. 

Tidak berhenti dari situ saja, karena data saya bersifat statis dan tidak ada penambahan. Saya mengkombinasikan sphinx search dengan caching file. Dimana setiap request akan di cache ke dalam file. Jadi jika kedepan ada request yang sama, tidak perlu akses lagi ke sphinx, tinggal panggil data yang tersimpan di dalam file. Dengan kombinasi optimasi ini, website lancar jaya tidak ada problem apapun. Sampai suatu ketika terjadi pembengkakan jumlah file cache. Ketika umur website semakin lama dan banyak request data, tentunya jumlah file cache juga semakin banyak. Akhirnya penggunaan disk juga meningkat.

Sebenarnya tidak masalah dengan ukuran data nya, karena sampai saat ini kapasitas hardisk server saya baru digunakan 30% saja. Masih ada sekitar 2TB yang kosong. Namun masalahnya adalah jumlah inodes ternyata yang dibatasi, sehingga tidak bisa create file lagi. Jadi banyak sekali error_log yang tersimpan yang melaporkan not enough disk space. Padahal space masih besar, ternyata inodes nya sudah full.

Karena hal itu, akhirnya banyak halaman web yang tidak bisa dibuka dan menampilkan pesan error 500. Tentunya sangat berdampak di perfoma google search console, terdapat banyak sekali laporan website error 500, yang mana jika tidak segera diatasi dapat menyebabkan ranking web drop. Karena bingung solusinya apa, akhirnya saya kosongkan saja folder cache untuk sementara waktu dan menghentikan aktifitas caching ke dalam bentuk file. Karena ternyata tidak efisien, saat ini hanya mengandalkan performa sphinx-search, semoga ke depan tidak ada problem dan bisa menemukan solusi caching yang tepat.


Senin, 10 Februari 2020

Cara Install PHP 7.3 di Centos 6

Tanpa fafifu, berikut cara install php 7.3 pada Centos 6. Postingan ini saya buat sebagai pengingat saya ketika lupa. Langsung paste saja syntax berikut di ssh.

wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
wget http://rpms.remirepo.net/enterprise/remi-release-6.rpm
rpm -Uvh remi-release-6.rpm epel-release-latest-6.noarch.rpm
yum install yum-utils -y
yum-config-manager --enable remi-php73
yum update -y
yum install php php-xml php-mbstring php-xmlrpc php-mcrypt php-cli php-gd php-curl php-mysql php-ldap php-zip php-fileinfo -y


Setelah itu, cek versi php nya dengan syntax berikut

php -v

Hasilnya harus seperti ini



Jika tidak seperti di atas, berarti belum berhasil. Coba lagi! Sekian.