Cách kiểm tra quá trình nào đang sử dụng hầu hết bộ nhớ


33

Khi tôi kiểm tra freemột trong các máy chủ Prod, nó hiển thị 70% bộ nhớ đang được sử dụng:

             total       used       free     shared    buffers     cached
Mem:     164923172  141171860   23751312          0    4555616   20648048
-/+ buffers/cache:  115968196   48954976
Swap:      8388600          0    8388600

Nhưng tôi không tìm thấy tiến trình nào đang sử dụng bộ nhớ, tôi đã thử toplệnh và nó đang hiển thị quá trình chỉ sử dụng bộ nhớ 1.1 và 5.4%

Làm thế nào tôi có thể tìm thấy quá trình đang sử dụng bộ nhớ?

Dưới đây là kết quả lệnh hàng đầu:

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


Cảm ơn đã phản hồi nhanh chóng, Có cách nào để kiểm tra tất cả các tệp đã mở và tệp nào đang ăn memeory.

1
Cố gắng sắp xếp đầu ra hàng đầu - khi chạy, nhấn Shift + m
Eenoku

Câu trả lời:


50

Điều này sẽ cho bạn thấy quá trình top 10 sử dụng nhiều bộ nhớ nhất:

ps aux --sort=-%mem | awk 'NR<=10{print $0}'

sử dụng hàng đầu: khi bạn mở báo chí hàng đầu msẽ xử lý ngắn dựa trên việc sử dụng bộ nhớ.

Nhưng điều này sẽ không giải quyết được vấn đề của bạn, trong Linux, mọi thứ đều là tệp hoặc quy trình. vì vậy các tập tin bạn mở sẽ ăn bộ nhớ quá. Vì vậy, điều này sẽ không giúp đỡ.

lsof sẽ cung cấp cho bạn tất cả các tệp đã mở với kích thước của tệp hoặc tệp được bù theo byte.


5
Bạn có thể sử dụng headthay cho tập lệnh awk này - nó cho cùng một đầu ra và bạn tiết kiệm cho mình viết nhiều ký tự lạ.
xốp bay

9

Ram của bạn không thực sự được sử dụng. Linux chỉ lưu trữ các thứ trên đĩa của bạn theo mặc định và đặt những gì nó lưu trữ trong phần "đã sử dụng" của ram.

Nếu bạn tải các ứng dụng thực sự sử dụng RAM đó, thì đó sẽ là ứng dụng của chúng.

Xem http://www.linuxHRyram.com/


Ai nói gì về Linux?
Timothy Pulliam

OP có quá trình "i386-linux-godu" đang chạy
Jean-Michaël Celerier

6

Bạn có thể đặt ống pssắp xếp để có được quá trình sử dụng nhiều bộ nhớ nhất. Nó cũng sẽ cho phép bạn chỉ định các chi tiết quá trình khác mà bạn muốn xem với nó:

ps -eo pmem,pcpu,rss,vsize,args | sort -k 1 -n -r | less

PS: Giả định ở trên giả định rằng cột bộ nhớ của bạn là " sort -k 1 -n -r " đầu tiên


3

Bạn có thể sử dụng lệnh slabtop để xem những đối tượng slab nào được kernel sử dụng.
Ngoài ra, bạn có thể kiểm tra đầu ra của / Proc / meminfo

Tìm 2 dòng này ở đầu ra

Slab:              68136 kB
SReclaimable:      21208 kB 

Ví dụ trên cho thấy 68 MB bộ đệm bộ đệm đang được sử dụng bởi kernel và 21 MB có thể được thu hồi. Để lấy lại, bạn có thể sử dụng kỹ thuật được mô tả tại đây https://access.redhat.com/documentation/en-US/Red_Hat_ Entryprise_Linux / 6

echo 2 > /proc/sys/vm/drop_caches  

1

Để phân tích tương tác, bạn có thể sử dụng htop, sau đó nhấn phím chức năng F6để chọn thứ tự sắp xếp, ví dụ: PERCENT_CPU(sử dụng bộ nhớ theo phần trăm), M_RESIDENT(kích thước bộ nhớ lưu trú, bộ nhớ thực được sử dụng), M_SIZE(kích thước bộ nhớ ảo) hoặc M_SHARE(kích thước của bộ nhớ chia sẻ). Hai cái đầu tiên là những con số liên quan .

Các dòng màu xanh lá cây là chủ đề. Nhấn (chữ hoa) KHđể ẩn chúng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.