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 secara 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. Periksa indikator berikut untuk memastikan kondisi OOM sedang terjadi:
- 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 paling besar. Lakukan langkah berikut:
- Login ke server melalui SSH.
-
Jalankan perintah berikut untuk menampilkan penggunaan RAM dan swap secara ringkas:
free -h -
Gunakan perintah berikut untuk melihat proses dengan 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. Lakukan langkah pengecekan 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 di atas:[ 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 apakah proses masih berjalan, melihat jumlah proses aktif, mengetahui konsumsi CPU dan memori, serta 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 berikut untuk menstabilkan server:
-
Hentikan proses yang tidak penting menggunakan perintah berikut (ganti PID dengan nomor PID service yang ingin dihentikan):
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. Lakukan langkah berikut:
- 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. Lakukan langkah berikut untuk menganalisis sumber beban:
-
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, gunakan 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 yang berjalan bersamaan dapat memicu lonjakan penggunaan memori di dalam 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 sebelum melanjutkan.
-
Periksa kembali log dengan menjalankan perintah berikut:
dmesg | grep -i oom -
Restart layanan terkait terlebih dahulu sebelum melakukan restart server, karena restart service lebih aman dibanding reboot 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 melibatkan restart server, tetapi juga mencakup pemeriksaan penggunaan memory, analisis log sistem, serta identifikasi proses penyebab lonjakan RAM. Dengan menjalankan 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
15 people say this guide was helpful
-
Cara Mengaktifkan Telnet pada Windows 7, 8 dan 10
5 people say this guide was helpful
-
Install dan Konfigurasi Samba Server pada Ubuntu
5 people say this guide was helpful
-
Jenis-Jenis Software Virtualisasi untuk Membuat Virtual Machine
7 people say this guide was helpful