Linux:找出哪些东西耗尽了所有虚拟内存
如何列出或显示 Debian 或 Ubuntu Linux 服务器下所有使用虚拟内存的所有进程、可执行文件和共享库以进行故障排除?
虚拟内存不过是 Linux 和许多其他现代操作系统使用的一种内存管理技术。
教程详细信息 | |
---|---|
困难 | 简单的 |
Root 权限 | 是的 |
要求 | memstat 工具 |
它将磁盘驱动器(硬盘或 SSD 等)上的活动 RAM 和非活动内存组合起来,形成一大段连续的地址。您可以使用 memstat 命令查看所有使用虚拟内存的进程、可执行文件和共享库。此命令必须以 root 用户身份运行,因为您需要查看所有正在运行的进程的数据。输出旨在帮助您识别使用过多内存的程序,并减少总体内存浪费。语法如下:
memstat memstat -w memstat -p PID-HERE
此-w选项会导致打印输出较宽:行不会在 80 列处截断。此-p选项导致 memstat 仅打印从查看具有给定 PID 的进程(例如 Apache 进程)收集的数据。
示例
键入以下命令:
# memstat
或
$ sudo memstat
示例输出(来自我的家庭 nfs 服务器):
272k: PID 1 (/sbin/init) 536k: PID 467 (/sbin/udevd) 532k: PID 586 (/sbin/udevd) 276k: PID 1191 (/sbin/portmap) 296k: PID 1204 (/sbin/rpc.statd) 308k: PID 1222 (/usr/sbin/rpc.idmapd) 268k: PID 1385 (/usr/sbin/vnstatd) 91028k: PID 1424 (/usr/sbin/rsyslogd) 416k: PID 1473 (/sbin/mdadm) 1068k: PID 1493 (/usr/bin/atop) 464k: PID 1517 (/usr/sbin/atd) 404k: PID 1520 (/usr/sbin/rpc.mountd) 476k: PID 1530 (/usr/sbin/cron) 300k: PID 1539 (/usr/sbin/acpid) 560k: PID 1545 (/usr/sbin/sshd) 300k: PID 1550 (/usr/bin/dbus-daemon) 276k: PID 1568 (/sbin/getty) 78404k: PID 1606 (/usr/sbin/console-kit-daemon) 732k: PID 1755 (/usr/sbin/sshd) 2160k: PID 1760 (/bin/bash) 292k: PID 1807 (/usr/bin/ssh-agent) 532k: PID 1942 (/sbin/udevd) 776k: PID 1944 (/usr/sbin/pppd) 276k: PID 1945 (/bin/dash) 280k: PID 1948 (/usr/sbin/pptp) 280k: PID 1956 (/usr/sbin/pptp) 484k: PID 2369 (/usr/bin/memstat) 1280k( 1280k): /dev/zero 1755 1280k( 1280k): /dev/zero 1755 20k( 16k): /sbin/getty 1568 64k( 56k): /sbin/rpc.statd 1204 344k( 316k): /sbin/mdadm 1473 148k( 124k): /sbin/udevd 467 586 1942 467 586 1942 467 586 1942 40k( 36k): /sbin/init 1 24k( 20k): /sbin/portmap 1191 2136k( 88k): /lib/libgcc_s.so.1 1424 34932k( 48k): /lib/libnss_files-2.11.3.so 467 586 1204 1222 1424 1473 ... 2064k( 16k): /lib/libattr.so.1.1.0 1204 12388k( 76k): /lib/libresolv-2.11.3.so 1222 1545 1606 1755 1948 1956 1... 12404k( 92k): /lib/libpthread-2.11.3.so 1222 1424 1545 1550 1606 1755 ... 336k( 120k): /lib/ld-2.11.3.so 1 467 586 1191 1204 1222 1385 1424 147... 10288k( 28k): /lib/librt-2.11.3.so 1222 1424 1550 1606 1755 1222 1424 ... 18580k( 112k): /lib/libselinux.so.1 1 467 586 1530 1545 1550 1606 1755 ... 26704k( 28k): /lib/libnss_compat-2.11.3.so 467 586 1222 1424 1473 1517... 57108k( 1380k): /lib/libc-2.11.3.so 1 467 586 1191 1204 1222 1385 1424 1... 4360k( 248k): /lib/libdbus-1.so.3.4.0 1606 1755 1606 1755 1606 1755 12320k( 8k): /lib/libutil-2.11.3.so 1545 1568 1755 1944 1948 1956 154... 32916k( 84k): /lib/libnsl-2.11.3.so 467 586 1191 1204 1222 1424 1473 1... 10292k( 32k): /lib/libcrypt-2.11.3.so 1517 1530 1545 1755 1944 1517 15... 4124k( 20k): /lib/libnss_dns-2.11.3.so 1948 1956 1948 1956 1948 1956 2928k( 876k): /lib/libglib-2.0.so.0.2400.2 1606 4392k( 264k): /lib/libncurses.so.5.7 1493 1760 1493 1760 1493 1760 2064k( 16k): /lib/libuuid.so.1.3.0 1520 4108k( 12k): /lib/libcom_err.so.2.1 1545 1755 1545 1755 1545 1755 2172k( 112k): /lib/libblkid.so.1.1.0 1520 240k( 236k): /lib/libsepol.so.1 1 32904k( 8k): /lib/libdl-2.11.3.so 1 467 586 1222 1424 1493 1517 1530 ... 4624k( 512k): /lib/libm-2.11.3.so 1385 1493 1385 1493 1385 1493 26716k( 40k): /lib/libnss_nis-2.11.3.so 467 586 1222 1424 1473 1517 15... 2104k( 52k): /lib/security/pam_unix.so 1755 2056k( 4k): /lib/security/pam_nologin.so 1755 2064k( 16k): /lib/security/pam_limits.so 1755 2052k( 4k): /lib/security/pam_motd.so 1755 2052k( 4k): /lib/security/pam_deny.so 1755 2060k( 12k): /lib/security/pam_env.so 1755 2056k( 8k): /lib/security/pam_mail.so 1755 2052k( 4k): /lib/security/pam_permit.so 1755 2064k( 16k): /lib/libcap.so.2.19 1204 4104k( 8k): /lib/libkeyutils.so.1.3 1545 1755 1545 1755 1545 1755 2240k( 192k): /lib/libpcre.so.3.12.1 1606 10292k( 32k): /lib/libwrap.so.0.7.6 1191 1204 1520 1545 1755 1191 1204... 10288k( 48k): /lib/libpam.so.0.82.2 1517 1530 1545 1755 1944 1517 1530... 2056k( 8k): /lib/security/pam_ck_connector.so 1755 8k( 8k): /var/run/pppd2.tdb 1944 904k( 868k): /bin/bash 1760 104k( 100k): /bin/dash 1945 4252k( 148k): /usr/lib/libk5crypto.so.3.1 1545 1755 1545 1755 1545 1755 4316k( 204k): /usr/lib/libgssapi_krb5.so.2.2 1545 1755 1545 1755 2208k( 152k): /usr/lib/libexpat.so.1.5.2 1550 476k( 452k): /usr/sbin/sshd 1545 1755 1545 1755 1545 1755 108k( 100k): /usr/bin/ssh-agent 1807 12380k( 92k): /usr/lib/libz.so.1.2.3.4 1424 1493 1545 1606 1755 1807 1... 4132k( 28k): /usr/lib/libkrb5support.so.0.1 1545 1755 1545 1755 12k( 8k): /usr/bin/memstat 2369 44k( 40k): /usr/sbin/acpid 1539 2188k( 132k): /usr/lib/libpolkit-gobject-1.so.0.0.0 1606 120k( 112k): /usr/bin/atop 1493 4936k( 760k): /usr/lib/libkrb5.so.3.3 1545 1755 1545 1755 1545 1755 40k( 36k): /usr/sbin/cron 1530 24k( 20k): /usr/sbin/atd 1517 320k( 296k): /usr/sbin/rsyslogd 1424 2060k( 8k): /usr/lib/rsyslog/imuxsock.so 1424 2072k( 24k): /usr/lib/rsyslog/imklog.so 1424 2068k( 20k): /usr/lib/rsyslog/lmnet.so 1424 8116k( 1492k): /usr/lib/libcrypto.so.0.9.8 1545 1755 1807 1545 1755 1807 64k( 60k): /usr/sbin/vnstatd 1385 2260k( 208k): /usr/lib/libpcap.so.1.1.1 1944 2060k( 12k): /usr/lib/libck-connector.so.0.0.0 1755 2756k( 696k): /usr/lib/libgio-2.0.so.0.2400.2 1606 2064k( 16k): /usr/lib/libgthread-2.0.so.0.2400.2 1606 2332k( 276k): /usr/lib/libgobject-2.0.so.0.2400.2 1606 2060k( 12k): /usr/lib/libgmodule-2.0.so.0.2400.2 1606 2192k( 136k): /usr/lib/libdbus-glib-1.so.2.1.0 1606 2332k( 276k): /usr/lib/libeggdbus-1.so.0.0.0 1606 324k( 316k): /usr/bin/dbus-daemon 1550 136k( 132k): /usr/sbin/console-kit-daemon 1606 92k( 84k): /usr/sbin/rpc.mountd 1520 312k( 284k): /usr/sbin/pppd 1944 72k( 64k): /usr/sbin/pptp 1948 1956 1948 1956 32k( 20k): /usr/sbin/rpc.idmapd 1222 2152k( 100k): /usr/lib/libevent-1.4.so.2.1.3 1222 2076k( 24k): /usr/lib/libnfsidmap.so.0.3.0 1222 28k( 28k): /usr/lib/gconv/gconv-modules.cache 1530 1606 1760 2984k( 0k): /usr/lib/locale/locale-archive 1530 1760 2056k( 8k): /usr/lib/libnfsidmap/nsswitch.so 1222 -------- 633108k ( 15844k)
了解输出
- 首先,列出进程。显示内存量以及进程 ID 和进程正在运行的可执行文件的名称。显示的内存量不包括共享内存:它仅包括该进程专用的内存。
- 进程之后列出了共享对象。显示内存量以及共享对象的文件名,后面是使用该
共享对象的进程列表。 - 最后,显示总数。
仅获取有关 Apache 或 Nginx 或 Lighttpd 进程的数据
首先,找到 Web 服务器的 PID:
使用以下语法仅显示从查看 PID # 3535 的进程收集的数据
# pidof httpd
# pidof nginx
# pidof lighttpd
# memstat -p 3535