Cara Mengatasi Server yang Mengalami Out of Memory (OOM)
0 people liked this article
A. Pendahuluan
Out of Memory (OOM) terjadi ketika server kehabisan RAM sehingga sistem tidak dapat menjalankan proses dengan normal. Kondisi ini dapat menyebabkan layanan berhenti, server menjadi lambat, atau sistem melakukan restart otomatis. Artikel ini menjelaskan langkah mitigasi awal dan cara mengidentifikasi penyebab OOM sebelum melakukan tindakan lanjutan.
B. Langkah-Langkah Penanganan
1. Mengidentifikasi Gejala Out of Memory
Kenali tanda-tanda server mengalami OOM.
Langkah pembenahan :
- Periksa apakah layanan menjadi lambat atau tidak responsif.
- Cek apakah proses tertentu berhenti secara tiba-tiba.
- Periksa apakah server melakukan restart otomatis.
- Pastikan terdapat pesan error terkait memory pada aplikasi atau sistem.
2. Mengecek Penggunaan Memory Secara Real-Time
Periksa penggunaan RAM untuk mengetahui proses yang menggunakan memory besar.
Langkah pembenahan :
- Login ke server melalui SSH.
-
Jalankan perintah berikut untuk menampilkan penggunaan RAM dan swap secara ringkas :
free -h -
Gunakan perintah berikut untuk melihat proses penggunaan RAM tertinggi :
atautophtop - Identifikasi proses yang menggunakan memory secara berlebihan.
3. Mengecek Log Sistem Penyebab OOM
Log sistem membantu mengidentifikasi proses yang dihentikan oleh kernel akibat kehabisan memory.
Langkah pengecekannya sebagai berikut :
-
Jalankan perintah berikut untuk melihat log OOM:
dmesg | grep -i oom -
Alternatif lain, periksa system log:
ataugrep -i "out of memory" /var/log/sysloggrep -i "oom" /var/log/messages -
Catat proses (PID) yang dihentikan oleh OOM Killer.
Log OOM biasanya muncul pada dmesg atau log sistem ketika kernel menghentikan proses karena RAM habis. Contoh output log OOM dari perintah diatas seperti berikut :[ 2456.123456] Out of memory: Kill process 18765 (php-fpm) score 892 or sacrifice child [ 2456.123789] Killed process 18765 (php-fpm) total-vm:2048000kB, anon-rss:512000kB Feb 10 14:22:31 server kernel: Out of memory: Kill process 2214 (mysqld) score 745 Feb 10 14:22:31 server kernel: Killed process 2214 (mysqld) total-vm:3124576kB -
Identifikasi aplikasi penyebab lonjakan penggunaan memory.
Setelah menemukan nama proses dari log OOM (misalnya php-fpm, mysqld, atau java), jalankan perintah berikut untuk mengetahui proses masih berjalan atau tidak, melihat jumlah proses aktif, mengetahui konsumsi CPU dan memori dan mendeteksi kemungkinan worker berlebihan atau memory leak :
Note : ganti php-fpm dengan nama proses yang ditemukan pada log.ps aux | grep php-fpm
Contoh outputnya seperti berikut :
Kolom penting yang perlu diperhatikan pada output perintah top atau htop di poin 2 :www-data 18765 5.2 25.3 2048000 512000 ? S 10:22 0:35 php-fpm: pool www
- PID → ID proses
- %MEM → persentase penggunaan RAM
- RSS/RES → jumlah RAM yang digunakan proses
- COMMAND → nama proses

4. Menghentikan atau Mengoptimalkan Proses Bermasalah
Setelah mengetahui proses penyebab OOM, lakukan tindakan untuk menstabilkan server.
Langkah pembenahan:
-
Hentikan proses yang tidak penting menggunakan perintah berikut (ganti PID dengan nomor PID service yang ingin di hentikan) :
kill -9 PID - Restart service yang bermasalah jika diperlukan.
- Optimalkan konfigurasi aplikasi agar penggunaan memory lebih efisien.
- Kurangi jumlah worker atau thread pada aplikasi jika terlalu besar.
5. Mengaktifkan dan Mengoptimalkan Swap Memory
Swap memory membantu sistem tetap berjalan ketika RAM utama penuh.
- Periksa swap yang tersedia dengan perintah berikut :
- Jika belum tersedia, buat swap file sesuai kebutuhan.
- Aktifkan swap untuk membantu menahan lonjakan penggunaan memory.
- Pastikan penggunaan swap tidak berlebihan karena dapat mempengaruhi performa.
6. Melakukan Analisis Beban Aplikasi
Beban aplikasi yang tinggi dapat menyebabkan penggunaan memory meningkat drastis. Anda bisa lakukan langkah berikut :
-
Periksa lonjakan trafik atau aktivitas pengguna.
Gunakan perintah berikut untuk melihat jumlah load server dan beban rata-rata :
Gunakan perintah berikut untuk melihat jumlah user yang sedang login :uptime
Gunakan perintah berikut untuk menghitung koneksi aktif ke web server (HTTP) :who
Jika koneksi sangat banyak, lonjakan trafik dapat meningkatkan penggunaan RAM.netstat -an | grep :80 | wc -l
-
Analisis query database yang berat atau tidak optimal.
Untuk MySQL/MariaDB bisa menggunakan perintah berikut untuk menampilkan query yang sedang berjalan. :
atau jalankan perintah berikut di dalam MySQL untuk mendeteksi query lambat atau menumpuk :mysqladmin processlist
Gunakan perintah berikut untuk melihat query lambat (jika slow log aktif): :SHOW FULL PROCESSLIST;tail -f /var/log/mysql/slow.log -
Periksa script atau cron job yang berjalan bersamaan.
Gunakan perintah berikut untuk melihat cron yang aktif :
Gunakan perintah berikut untuk melihat cron system-wide :crontab -l
Gunakan perintah berikut untuk melihat proses yang berjalan saat ini :ls /etc/cron*
Pemeriksaan ini diperlukan karena Cron job bersamaan dapat memicu lonjakan penggunaan memori didalam server.ps aux --sort=-%mem | head
-
Optimalkan konfigurasi aplikasi dan database.
Gunakan perintah berikut untuk cek konfigurasi MySQL buffer :
Gunakan perintah berikut untuk cek jumlah worker PHP-FPM, karena Worker yang berlebihan dapat menghabiskan RAM :mysql -e "SHOW VARIABLES LIKE '%buffer%';"ps aux | grep php-fpm | wc -l
7. Restart Service atau Server (Jika Diperlukan)
Restart dapat menjadi langkah terakhir setelah mitigasi awal dilakukan.
-
Pastikan penyebab OOM telah diidentifikasi.
Periksa kembali log degan menjalankan perintah berikut :dmesg | grep -i oom -
Restart layanan terkait terlebih dahulu sebelum melakukan restart server karena melakukan restart service lebih aman dibanding reboot/restart server.
Gunakan perintah berikut untuk Restart PHP-FPM :
Gunakan perintah berikut untuk Restart MySQL :systemctl restart php-fpm
Gunakan perintah berikut untuk Restart Nginx :systemctl restart mysqld
Gunakan perintah berikut untuk Restart Apache :systemctl restart nginxsystemctl restart httpd -
Jika server masih tidak stabil, lakukan reboot/restart server.
-
Monitor penggunaan memory setelah server aktif kembali.
Gunakan perintah berikut untuk melihat penggunaan RAM :
Gunakan perintah berikut untuk memantau proses dan penggunaan resource :free -h
Gunakan perintah berikut untuk memantau memori secara real-time :topwatch -n 2 free -h
C. Kesimpulan
Out of Memory (OOM) dapat menyebabkan layanan server terganggu dan downtime. Mitigasi awal tidak hanya melakukan restart server, tetapi juga mencakup pemeriksaan penggunaan memory, analisis log sistem, serta identifikasi proses penyebab lonjakan RAM. Dengan melakukan langkah-langkah tersebut, stabilitas server dapat dipulihkan dan risiko kejadian berulang dapat diminimalkan.
Semoga artikel ini dapat membantu Anda. Temukan bantuan lainnya melalui Knowledge Base Biznet Gio. Jika Anda masih memiliki kendala silakan hubungi Support Biznet GIO melalui email support@biznetgio.com atau live chat maupun WA ke website www.biznetgio.com dan bisa juga melalui telepon ke nomor (021) 5714567.
Popular Articles
-
Cara Install & Konfigurasi Monitoring Cacti Serta Mengetahui Fungsi Fitur Pada Cacti
12 people say this guide was helpful
-
Cara Mengaktifkan Telnet pada Windows 7, 8 dan 10
4 people say this guide was helpful
-
Install dan Konfigurasi Samba Server pada Ubuntu
4 people say this guide was helpful
-
Jenis-Jenis Software Virtualisasi untuk Membuat Virtual Machine
7 people say this guide was helpful