lagi sibuk nganggur, tiba-tiba dapet notifikasi pesan seperti dibawah ini

504 adalah error dengan pesan Gateway Time Out, dimana backend dari sebuah service tidak mampu melayani request. bahasa singkatnya, website down.
hal pertama yang saya lakukan adalah cek resource dari server. dan hasilnya full senyumm..

resource mentok gaess. FYI, ini adalah aplikasi web base yang hanya menampilkan informasi publik, tidak ada proses yang terlalu rumit, sehingga menjadi tidak wajar ketika server penuh dari segala sisi.
hal berikutnya yang saya lakukan adalah cek log dari web server,

dari hasil tangkapan layar, diketahui terdapat trafik dengan jumlah besar pada web server dengan kegiatan Scanning. kegiatan scanning adalah kegiatan yang dilakukan oleh seorang atau kelompok peretas ( hacker ) untuk mendapatkan Bug atau kelemahan dari sebuah sistem yang kemudian di exploitasi untuk mendapatkan informasi bahkan takeover sistem tersebut. ,
lo mas, kok kegiatan scanning bisa lolos ya, ?? ya karena request bernilai TRUE, sehingga oleh web server permintaannya dilayani. ini yang bikin web servernya sibuk melayani, akhirnya stress dan hank. kamu kalo ngelayani terus, stress juga kan ? wkwkwk.
lo mas, scanning gak bisa dihalau ta ? bisa, kalau punya perangkat seperti WAF, kalau punya…..
saya coba menaikkan resource server, namun tidak mengatasi, dan tetap full.
dari hasil bertapa tengah malam, saya coba otak atik dari sisi konfigurasi, bahasa kerennya performance tuning, wkwkwkwk. beberapa item yang saya lakukan untuk performance tuning, yaitu :
- mengubah atau menerapkan PHP-FPM / mpm-event sebagai backend proses,karena ini lebih stabil daripada mpm-prefork
- melakukan perubahan nilai dari konfigurasi PHP-FPM, perlu diingat, setiap konfigurasi berbeda sesuai dengan spek server
pm = dynamic
pm.max_children = 690
pm.start_servers = 40
pm.min_spare_servers = 20
pm.max_spare_servers = 60
pm.max_requests = 1000
3. melakukan perubahan nilai pada php-event.
<IfModule mpm_event_module>
StartServers 4
ServerLimit 30
ThreadsPerChild 25
MinSpareThreads 100
MaxSpareThreads 250
MaxRequestWorkers 750
MaxConnectionsPerChild 1000
</IfModule>
4. mengaktifkan KeepAlive (hemat overhead koneksi) di konfig apache
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 3
5. melakukan tuning php-fpm
pm = dynamic
pm.max_children = 690
pm.start_servers = 40
pm.min_spare_servers = 20
pm.max_spare_servers = 60
pm.max_requests = 1000
6. merubah limits dari server itu sendiri.
www-data soft nproc 65535
www-data hard nproc 65535
www-data soft nofile 65535
www-data hard nofile 65535
perlu diingat, nilai konfigurasi ini tidak sama tiap-tiap server. karena menyesuikan spesifikasi maupun tingkah laku wkwkwk server tersebut. tapi secara konsep ThroubleShooting, ya kurang lebih begitulah konsepnya.
nah, setelah saya menerapkan konfig tersebut, sambil saya anu-anuin pake kemenyan, saya start semua service dan layanan kembali normal dengan hasil yang cukup memuaskan. ah…….
