GNU/Linux >> Belajar Linux >  >> Linux

Sesuatu memakan semua memori (saya menduga kebocoran memori pada beberapa aplikasi). Bagaimana cara mendeteksi apa?

Solusi 1:

Menjalankan top dalam mode batch untuk melaporkan ukuran memori secara berkala dapat digunakan untuk melihat siapa yang menggunakan memori saat terjadi masalah. Menjalankan sar dalam mode batch harus memberikan beberapa diagnostik yang baik tentang penggunaan memori, dan I/O terkait. Menjalankan munin untuk memantau sistem harus memberi Anda grafik dengan detail yang bagus tentang untuk apa memori digunakan. Ini mungkin sangat membantu.

Anda dapat menggunakan limit.conf untuk membatasi ukuran maksimum inti program. Diatur dengan benar, ini akan membunuh semua program yang mengalami kebocoran memori. Ini bekerja dengan modul pam_limits. Batasan juga dapat diatur dengan ulimits perintah.

Anda menjalankan beberapa program yang dapat menggunakan memori dalam jumlah besar. Beberapa hal yang dapat Anda lihat termasuk.

  • Aplikasi yang diprogram dengan buruk berjalan di bawah apache2 dapat membocorkan memori. Anda akan melihat peningkatan ukuran memori saat ini terjadi. Anda dapat menyetel apache2 untuk mendaur ulang turunan setelah beberapa kali penggunaan dengan menyetel MaxRequestsPerChild sampai 100 atau lebih. Jika ini menyelesaikan masalah, maka Anda perlu menyelesaikan kebocoran tersebut. Saya akan menonton ini dulu.
  • MySQL mungkin mencoba memuat data ke dalam memori. Jika Anda memiliki banyak data dalam memori, hal ini dapat menyebabkan kerusakan, tetapi seharusnya tidak sedramatis yang Anda lihat.
  • Jika Anda memiliki tmpfs yang besar sistem file terpasang, maka Anda dapat membocorkan memori jika file tidak dihapus saat digunakan. File besar berumur panjang juga bisa menjadi masalah.
  • Jika masalah terjadi kira-kira pada waktu yang sama, Anda mungkin memiliki program terjadwal yang mengalami kebocoran memori.
  • Jika Anda memiliki program yang mengalokasikan memori bersama, tetapi tidak merilisnya sebelum keluar, Anda akan mengalami kebocoran memori yang relatif tidak terlihat. Jika memori bersama dikunci dalam memori, maka itu dapat memaksa pertukaran. Jumlah memori bersama yang tersedia biasanya relatif terbatas.
  • Paket liquidsoap+icecast dapat mengalami masalah buffering yang menggunakan memori. Saya belum pernah menggunakan kombinasi ini, jadi saya tidak yakin bagaimana tampilannya.

Penggunaan memori normal:Memori bebas bukanlah sesuatu yang sangat Anda inginkan. Jika sistem Anda sudah lama aktif dan memiliki banyak memori kosong, ada yang salah. Setiap kali Anda membaca atau menulis file, blok akan masuk ke cache buffer. Ini akan mengurangi memori bebas Anda, dan merupakan hal yang baik. Sistem akan menyimpan ruang kosong yang cukup untuk memulai beberapa program tanpa mencari memori di tempat lain. Karena banyak program berjalan dengan cepat, memori mereka akan dikembalikan ke kumpulan gratis ketika mereka berhenti berjalan.

Saat Anda membaca file yang ada di cache buffer, akses disk tidak diperlukan dan pembacaan diselesaikan dari cache buffer. Menulis menggunakan mekanisme serupa. Jika sistem Anda membutuhkan memori, buffer cache adalah salah satu tempat pertama yang digunakan. Sebagian besar buffer dapat segera dirilis.

Jika Anda mengalami kebocoran memori, Anda akan melihat memori bebas dan buffer keduanya mulai menyusut. Ini masih bukan masalah yang parah, karena memori yang bocor pada akhirnya harus dipindahkan ke ruang swap. Sistem Anda akan tetap berjalan dengan baik sampai Anda mengisi ruang swap, dan menarik ruang kosong yang tersisa hingga program tidak dapat dijalankan. Biasanya sejumlah kecil ruang swap dapat digunakan.

Solusi 2:

Anda dapat menggunakan perintah ini untuk melihat 10 aplikasi teratas terkait penggunaan RAM:

ps -A --sort -rss -o comm,pmem | head -n 11

Terkadang perintah ini membantu Anda jika banyak sub proses telah dihasilkan:

ps auxf

Dengan cara ini Anda dapat melihat proses mana yang memiliki kesamaan.

Solusi 3:

Tidak ada yang benar-benar menggunakan memori itu dalam hal aplikasi.

Anda perlu mengurangi nilai 'cache' yang mewakili cache halaman untuk mendapatkan ide yang lebih baik tentang penggunaan memori Anda yang sebenarnya dalam hal penggunaan program.

Pada dasarnya ini adalah manajemen memori yang baik dan idealnya inilah yang Anda inginkan.

Lihat tautan di sini untuk informasi lebih lanjut:http://www.linuxatemyram.com/


Linux
  1. Bagaimana Cara Mengisi 90% Dari Memori Gratis?

  2. Bagaimana Program Unix Idiomatik Mendeteksi Awalan Apa yang Diinstal Di Bawahnya?

  3. Bagaimana Mendeteksi Kebocoran Memori?

  1. Apa itu ioremap()

  2. Bagaimana cara menghapus semua file dalam direktori kecuali beberapa?

  3. Bagaimana cara mendapatkan% penggunaan memori dengan vmstat?

  1. Cara Menghapus Buffer Memori dan Cache di Linux

  2. Bagaimana cara mengetahui apa yang menghabiskan semua ruang di partisi / saya?

  3. Chrome memakan semua RAM dan membekukan sistem