Ketika saya memeriksa free
di salah satu server Prod, itu menunjukkan 70% dari memori sedang digunakan:
total used free shared buffers cached
Mem: 164923172 141171860 23751312 0 4555616 20648048
-/+ buffers/cache: 115968196 48954976
Swap: 8388600 0 8388600
Tapi saya tidak menemukan proses apa yang menggunakan memori, saya mencoba top
perintah dan itu menunjukkan proses menggunakan memori hanya 1,1 dan 5,4%
Bagaimana saya bisa menemukan proses mana yang menggunakan memori?
Di bawah ini adalah hasil perintah teratas:
15085 couchbas 25 0 2784m 2.4g 40m S 183.7 1.5 299597:00 beam.smp
28248 tibco 18 0 124m 100m 3440 S 20.9 0.1 2721:45 tibemsd
15334 couchbas 15 0 9114m 8.6g 3288 S 9.0 5.4 12996:28 memcached
15335 couchbas 18 0 6024 600 468 S 2.0 0.0 1704:54 sigar_port
15319 couchbas 15 0 775m 2516 944 S 0.7 0.0 269:13.41 i386-linux-godu
12167 tibco 16 0 11284 1464 784 R 0.3 0.0 0:00.04 top
12701 root 15 0 451m 427m 2140 S 0.3 0.3 18:25.02 controller
13163 root 11 -5 0 0 0 S 0.3 0.0 289:58.58 vxglm_thread
Jawaban:
Ini akan menunjukkan kepada Anda 10 proses teratas yang menggunakan sebagian besar memori:
menggunakan top: ketika Anda membuka top press
m
akan melakukan proses pendek berdasarkan penggunaan memori.Tetapi ini tidak akan menyelesaikan masalah Anda, di Linux semuanya adalah file atau proses. jadi file yang Anda buka akan memakan memori juga. jadi ini tidak akan membantu.
lsof
akan memberi Anda semua file yang dibuka dengan ukuran file atau file diimbangi dalam byte.sumber
head
bukan skrip awk ini - ini memberikan hasil yang sama dan Anda menghemat banyak karakter aneh.Ram Anda tidak benar-benar digunakan. Linux hanya menyimpan cache pada disk Anda secara default, dan meletakkannya di bagian ram "bekas".
Jika Anda memuat aplikasi yang benar-benar menggunakan RAM itu, itu akan menjadi untuk digunakan.
Lihat http://www.linuxatemyram.com/
sumber
Anda dapat menyalurkan ps dan mengurutkan untuk mendapatkan proses menggunakan sebagian besar memori. Ini juga akan memungkinkan Anda menentukan detail proses lain yang ingin Anda lihat dengannya:
PS: Di atas mengasumsikan bahwa kolom memori Anda adalah pertama " sort -k 1 -n -r "
sumber
Anda dapat menggunakan perintah slabtop untuk melihat objek slab apa yang digunakan oleh kernel.
Anda juga dapat memeriksa output dari / proc / meminfo
Cari 2 baris ini di output
Contoh di atas menunjukkan 68MB cache slab sedang digunakan oleh kernel dan 21MB dapat direklamasi. Untuk mengklaim kembali, Anda dapat menggunakan teknik yang dijelaskan di sini https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html-single/Performance_Tuning_Guide/#s-memory-tunables
sumber
Untuk analisis interaktif, Anda dapat menggunakan
htop
, lalu tekan tombol fungsiF6
untuk memilih urutan, misalnyaPERCENT_CPU
(penggunaan memori dalam persen),M_RESIDENT
(ukuran memori penduduk, memori nyata yang digunakan),M_SIZE
(ukuran memori virtual) atauM_SHARE
(ukuran memori). Berbagi memori). Dua yang pertama adalah angka yang relevan .Garis hijau adalah utas. Tekan (huruf besar)
K
danH
sembunyikan.sumber