Kami baru-baru ini memperkenalkan IBM Instana Crash Detector, yang secara otomatis mendeteksi dan melaporkan penghentian proses abnormal pada semua mesin Linux dengan kernel versi 4.8 atau lebih tinggi. Platform IBM Instana menggunakan fitur Extended Berkeley Packet Filter (eBPF) pada kernel Linux untuk terhubung langsung ke kernel dan memantau penghentian proses secara real-time. Setiap penghentian abnormal ditandai oleh agen host, yang menyaringnya terhadap proses yang dipantau untuk menghindari notifikasi yang tidak relevan, lalu mengirimkan informasi tersebut ke backend IBM Instana. Fungsi ini terbukti sangat membantu bagi klien kami dalam menangani insiden pemecahan masalah.
Dengan Crash Detector, perangkat lunak IBM Instana menyediakan data penting untuk mendiagnosis berbagai masalah yang mempengaruhi kinerja aplikasi klien kami. Kami kini meningkatkan fungsionalitas ini dengan menambahkan pemantauan peristiwa out-of-memory killer (OOM killer) ke Crash Detector, yang sangat berharga karena relevansinya untuk aplikasi yang berjalan dalam kontainer.
Cloud mungkin memberi kesan bahwa, dengan anggaran yang cukup, Anda dapat memiliki daya komputasi tanpa batas sesuai kebutuhan. Namun, daya komputasi itu datang dalam irisan. Host (baik fisik maupun virtual), kontainer, dan fungsi—semuanya memiliki batasan terkait jumlah memori yang dapat dialokasikan.
Di Linux, pembunuh out-of-memory (OOM) adalah proses yang bertugas mencegah agar proses lain tidak menghabiskan seluruh memori yang tersedia di host. Ketika sebuah proses mencoba mengalokasikan lebih banyak memori daripada yang tersedia, proses dengan skor keburukan tertinggiv misalnya, yang melebihi batas alokasi memori yang diizinkan—akan menerima sinyal OOM. Ini pada dasarnya berarti: "Anda sudah melampaui batas. Berhenti atau minta beberapa proses anak Anda berhenti, atau lampu padam."
Perhatikan bahwa proses yang memicu OOM mungkin bukan proses yang menerima sinyal OOM. Aplikasi yang baru-baru ini meningkatkan penggunaan memorinya mungkin tiba-tiba menerima sinyal OOM jika terlalu banyak aplikasi lain yang berjalan di host yang sama.
Mekanisme sinyal OOM mungkin terdengar kasar, tetapi sebenarnya sangat efektif dalam mencegah kehabisan memori pada host, terutama ketika aplikasi tidak mengelola ukuran memori dengan baik atau terlalu banyak aplikasi berjalan bersamaan (misalnya, host yang tidak sesuai dengan beban kerja).
Pada platform terkontainerisasi seperti Kubernetes, Cloud Foundry, dan Nomad, pengelolaan penggunaan memori—baik dalam hal ukuran aplikasi yang tepat maupun jumlah aplikasi yang dijalankan sekaligus di sebuah host—menjadi sangat penting. Umumnya, Anda tidak merencanakan secara terperinci aplikasi mana yang berjalan pada satu node. Dalam banyak pengaturan, kontainer akan dialokasikan sesuai dengan beberapa logika oleh orkestrator. Menerapkan batas konsumsi memori maksimum sangat penting untuk kontainer dan grup kontrol (cgroup), yang merupakan dasar dari hampir semua teknologi kontainer di Linux. Sistem ini juga memanfaatkan pembunuh OOM untuk memastikan bahwa proses dalam kelompok yang sama (misalnya, kontainer) tidak mengalokasikan lebih banyak memori daripada yang diizinkan. Ketika proses dalam kontainer Anda mencoba mengalokasikan lebih banyak memori daripada yang diizinkan, beberapa proses akan dihentikan, yang sering kali menyebabkan kontainernya juga berhenti.
Dalam skala besar, semuanya lebih sulit, termasuk ukuran. Semakin banyak kontainer yang Anda jalankan di lingkungan Anda, semakin sulit untuk mengetahui kapan, bagaimana, dan mengapa beberapa di antaranya berhenti berfungsi. OOM killer dapat menyebabkan situasi yang tidak stabil pada aplikasi Anda, di mana proses terus-menerus crash dan restart. Hal ini menghasilkan kesalahan berulang bagi pengguna akhir, membuat pencapaian tujuan tingkat layanan (SLO) menjadi sulit dan masalahnya sulit untuk dipecahkan.
Mencari tahu alasan mengapa pembunuh OOM membuang setiap proses sangat bergantung pada teknologi yang Anda gunakan. Beberapa paket perangkat lunak akan mencatatnya di log mereka sendiri. Atau, Anda mungkin perlu menjalankan beberapa perintah berikut di host Anda untuk setiap proses:
#CentOS
grep -i "out of memory" /var/log/messages
#Debian / Ubuntu
grep -i "out of memory" /var/log/kern.log
Meskipun terlihat sederhana, ini jelas bukan tugas yang ingin Anda jalankan di seluruh armada produksi Anda hanya untuk mencari tahu mengapa MySQL restart pada pukul 3 pagi. Terutama ketika Anda merasa curiga, karena sepertinya tidak ada penjelasan lain mengapa proses basis data tiba-tiba menghilang.
Dengan kata lain, OOM killer adalah sistem yang sangat penting dan efektif untuk memastikan keandalan, namun seringkali gagal memberikan observabilitas yang memadai. Tetapi platform IBM Instana ada di sini agar memperbaikinya untuk Anda.
Sebagai lanjutan dari penerapan eBPF yang mendasari Crash Detector, perangkat lunak IBM Instana kini dilengkapi dengan detektor pembunuh OOM yang unik. Saat proses Anda dipantau oleh perangkat lunak IBM Instana, proses tersebut akan menerima sinyal OOM secara real-time. Tidak hanya itu yang terjadi, tetapi juga bagaimana situasi diselesaikan (yaitu, proses mana yang terbunuh).
Seperti fitur-fitur lainnya di IBM Instana, Anda hanya perlu menginstal agen host IBM Instana, dan OOM killer akan otomatis menjalankan tugasnya tanpa intervensi lebih lanjut. Ini juga menunjukkan jumlah memori yang dialokasikan oleh proses yang dihentikan pada saat kejadian, sehingga Anda dapat memahami mengapa proses tersebut dianggap "buruk" oleh OOM killer.
Menentukan bagaimana dan mengapa sebuah proses dihentikan atau dibunuh oleh OOM killer bisa memakan waktu berjam-jam—bahkan berhari-hari—jika tidak menggunakan alat yang tepat. Dengan IBM Instana Crash Detector, pengguna kini dapat dengan cepat mengetahui akar masalah setiap penghentian proses abnormal dan proses yang dibunuh oleh OOM.
Perlu memahami mengapa sebuah kontainer mati? Tidak masalah. Dengan IBM Instana Crash Detector OOM killer, Anda akan mengetahui jika Java Virtual Machine (JVM) yang menjalankan tugas batch penting mengalokasikan lebih banyak sumber daya daripada yang diizinkan. Atau, Anda mungkin perlu mencari tahu penyebab di balik banyaknya kegagalan permintaan Hypertext Preprocessor (PHP) atau mengapa database Anda tiba-tiba menghilang. Dengan IBM Instana Crash Detector OOM killer, Anda akan langsung mendapatkan akses ke akar penyebab masalah ini.
Untuk menghemat waktu Anda dan tim DevOps dalam memecahkan masalah peristiwa pembunuh OOM, cukup instal agen IBM Instana di OS Linux Anda hari ini. Jika Anda belum memiliki instance IBM Instana, Anda dapat mencoba IBM Instana Crash Detector dengan deteksi pembunuh OOM melalui uji coba gratis.
Mendaftar untuk uji coba gratis selama dua minggu