linux cache过大问题
转载: https://www.shangmayuan.com/a/2d4d74e140024d39a58f3a34.html
- 操做系统 CentOS Linux release 7.3.1611 (Core)
- 系统内存 16G
[root@clxcld-gateway-prod ~]# free -g
total used free shared buff/cache available
Mem: 15 0 0 0 13 14
Swap: 3 0 3
系统总共启动2个Java进程,一个Xmx 3G 另一个Xmx 4G, 但发现系统使用的内存不多,全部的内存所有被cache占用,重启Java进程也不起做用。 php
查看lsof -ihtml
[root@clxcld-gateway-prod log]# lsof -i
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root 43u IPv6 13662 0t0 TCP *:sunrpc (LISTEN)
systemd 1 root 44u IPv4 13663 0t0 TCP *:sunrpc (LISTEN)
chronyd 667 chrony 1u IPv4 14114 0t0 UDP localhost:323
chronyd 667 chrony 2u IPv6 14115 0t0 UDP localhost:323
avahi-dae 712 avahi 12u IPv4 15942 0t0 UDP *:mdns
avahi-dae 712 avahi 13u IPv4 15943 0t0 UDP *:56794
xinetd 1066 root 5u IPv6 19825 0t0 TCP *:nrpe (LISTEN)
xinetd 1066 root 6u IPv6 19826 0t0 TCP *:nsca (LISTEN)
sshd 1084 root 3u IPv4 18988 0t0 TCP *:mxxrlogin (LISTEN)
sshd 1084 root 4u IPv6 18997 0t0 TCP *:mxxrlogin (LISTEN)
rpc.statd 1133 rpcuser 5u IPv4 20812 0t0 UDP localhost:885
rpc.statd 1133 rpcuser 8u IPv4 21033 0t0 UDP *:41165
rpc.statd 1133 rpcuser 9u IPv4 21037 0t0 TCP *:59161 (LISTEN)
rpc.statd 1133 rpcuser 10u IPv6 21041 0t0 UDP *:32879
rpc.statd 1133 rpcuser 11u IPv6 21045 0t0 TCP *:39979 (LISTEN)
rpcbind 1138 rpc 4u IPv6 13662 0t0 TCP *:sunrpc (LISTEN)
rpcbind 1138 rpc 5u IPv4 13663 0t0 TCP *:sunrpc (LISTEN)
rpcbind 1138 rpc 8u IPv4 20895 0t0 UDP *:sunrpc
rpcbind 1138 rpc 9u IPv4 20896 0t0 UDP *:iclcnet_svinfo
rpcbind 1138 rpc 10u IPv6 20897 0t0 UDP *:sunrpc
rpcbind 1138 rpc 11u IPv6 20898 0t0 UDP *:iclcnet_svinfo
master 1250 root 13u IPv4 20394 0t0 TCP localhost:smtp (LISTEN)
master 1250 root 14u IPv6 20395 0t0 TCP localhost:smtp (LISTEN)
sshd 23166 root 3u IPv4 175197624 0t0 TCP clxcld-gateway-prod:mxxrlogin->172.23.46.21:45974 (ESTABLISHED)
java 24608 root 138u IPv6 175242571 0t0 TCP *:40673 (LISTEN)
java 24608 root 140u IPv6 175242124 0t0 TCP clxcld-gateway-prod:47240->10.13.248.15:mysql (ESTABLISHED)
java 24608 root 141u IPv6 175242127 0t0 TCP clxcld-gateway-prod:47246->10.13.248.15:mysql (ESTABLISHED)
java 24608 root 144u IPv6 175242130 0t0 TCP *:pcsync-https (LISTEN)
java 24608 root 149u IPv6 175252852 0t0 TCP clxcld-gateway-prod:51920->10.13.248.15:mysql (ESTABLISHED)
java 24610 root 108u IPv6 175242117 0t0 TCP *:41423 (LISTEN)
java 24610 root 112u IPv6 175242684 0t0 TCP *:warehouse (LISTEN)
java 24610 root 113u IPv6 175242691 0t0 TCP clxcld-gateway-prod:47248->10.13.248.15:mysql (ESTABLISHED)
java 24610 root 114u IPv6 175243437 0t0 TCP clxcld-gateway-prod:47258->10.13.248.15:mysql (ESTABLISHED)
java 24610 root 118u IPv6 175242785 0t0 TCP clxcld-gateway-prod:47260->10.13.248.15:mysql (ESTABLISHED)
ssh 24748 root 3u IPv4 175243834 0t0 TCP clxcld-gateway-prod:33706->clxcld-gateway-prod:mxxrlogin (ESTABLISHED)
sshd 24750 root 3u IPv4 175242791 0t0 TCP clxcld-gateway-prod:mxxrlogin->clxcld-gateway-prod:33706 (ESTABLISHED)
python 24761 root 4u IPv4 175242899 0t0 TCP clxcld-gateway-prod:46418->analytics-prod.cpkzgarrnsp3.us-west-2.redshift.amazonaws.com:5439 (ESTABLISHED)
zabbix_ag 25594 zabbix 4u IPv4 175270400 0t0 TCP *:zabbix-agent (LISTEN)
zabbix_ag 25594 zabbix 5u IPv6 175270401 0t0 TCP *:zabbix-agent (LISTEN)
zabbix_ag 25595 zabbix 4u IPv4 175270400 0t0 TCP *:zabbix-agent (LISTEN)
zabbix_ag 25595 zabbix 5u IPv6 175270401 0t0 TCP *:zabbix-agent (LISTEN)
zabbix_ag 25596 zabbix 4u IPv4 175270400 0t0 TCP *:zabbix-agent (LISTEN)
zabbix_ag 25596 zabbix 5u IPv6 175270401 0t0 TCP *:zabbix-agent (LISTEN)
zabbix_ag 25597 zabbix 4u IPv4 175270400 0t0 TCP *:zabbix-agent (LISTEN)
zabbix_ag 25597 zabbix 5u IPv6 175270401 0t0 TCP *:zabbix-agent (LISTEN)
zabbix_ag 25598 zabbix 4u IPv4 175270400 0t0 TCP *:zabbix-agent (LISTEN)
zabbix_ag 25598 zabbix 5u IPv6 175270401 0t0 TCP *:zabbix-agent (LISTEN)
zabbix_ag 25599 zabbix 4u IPv4 175270400 0t0 TCP *:zabbix-agent (LISTEN)
zabbix_ag 25599 zabbix 5u IPv6 175270401 0t0 TCP *:zabbix-agent (LISTEN)
问题排查:
参考 https://www.cnblogs.com/zh94/p/11922714.html , 下载hcache工具: java
github 地址:https://github.com/silenceshell/hcache
直接下载:wget https://silenceshell-1255345740.cos.ap-shanghai.myqcloud.com/hcache
chmod 755 hcache
mv hcache /usr/local/bin
使用hcache -top 10 查看占用最大的进程:node
hcache --top 10
+-------------------------------------------------------------------------------------------------------------------------------------+----------------+------------+-----------+---------+
| Name | Size (bytes) | Pages | Cached | Percent |
|-------------------------------------------------------------------------------------------------------------------------------------+----------------+------------+-----------+---------|
| /run/log/journal/d14e699e8bbc43228324a169b0f855fe/system@6cfacedb39904c2499acffe16d0fd88a-00000000006ab097-000597ad5568adc2.journal | 58720256 | 14336 | 12246 | 085.421 |
| /run/log/journal/d14e699e8bbc43228324a169b0f855fe/system@6cfacedb39904c2499acffe16d0fd88a-0000000000734380-000599df09bbc4a3.journal | 58720256 | 14336 | 12245 | 085.414 |
| /run/log/journal/d14e699e8bbc43228324a169b0f855fe/system@6cfacedb39904c2499acffe16d0fd88a-00000000006d23a4-0005984dfc97fc32.journal | 58720256 | 14336 | 12242 | 085.393 |
| /run/log/journal/d14e699e8bbc43228324a169b0f855fe/system@6cfacedb39904c2499acffe16d0fd88a-0000000000747d1e-00059a2f7faf1d70.journal | 58720256 | 14336 | 12242 | 085.393 |
| /run/log/journal/d14e699e8bbc43228324a169b0f855fe/system@6cfacedb39904c2499acffe16d0fd88a-000000000075b6bb-00059a801bbaf6ca.journal | 58720256 | 14336 | 12242 | 085.393 |
| /run/log/journal/d14e699e8bbc43228324a169b0f855fe/system@6cfacedb39904c2499acffe16d0fd88a-0000000000697714-0005975cf155fc13.journal | 58720256 | 14336 | 12241 | 085.386 |
| /run/log/journal/d14e699e8bbc43228324a169b0f855fe/system@6cfacedb39904c2499acffe16d0fd88a-000000000070d02d-0005993e39fdff2a.journal | 58720256 | 14336 | 12239 | 085.372 |
| /run/log/journal/d14e699e8bbc43228324a169b0f855fe/system@6cfacedb39904c2499acffe16d0fd88a-00000000006bea28-000597fda900f06e.journal | 58720256 | 14336 | 12239 | 085.372 |
| /run/log/journal/d14e699e8bbc43228324a169b0f855fe/system@6cfacedb39904c2499acffe16d0fd88a-00000000006e5d54-0005989e300b3aa6.journal | 58720256 | 14336 | 12239 | 085.372 |
| /run/log/journal/d14e699e8bbc43228324a169b0f855fe/system@6cfacedb39904c2499acffe16d0fd88a-00000000007209f2-0005998ebb1d505b.journal | 58720256 | 14336 | 12239 | 085.372 |
+-------------------------------------------------------------------------------------------------------------------------------------+----------------+------------+-----------+---------+
发现systemd进程journal占用不少bufferpython
[root@clxcld-gateway-prod d14e699e8bbc43228324a169b0f855fe]# ls -lath *
-rw-r-----+ 1 root systemd-journal 8.0M Jan 2 06:43 system.journal
-rw-r-----+ 1 root systemd-journal 56M Jan 2 03:26 system@6cfacedb39904c2499acffe16d0fd88a-000000000076f05c-00059ad09a381e0a.journal
-rw-r-----+ 1 root systemd-journal 56M Dec 29 05:00 system@6cfacedb39904c2499acffe16d0fd88a-000000000075b6bb-00059a801bbaf6ca.journal
-rw-r-----+ 1 root systemd-journal 56M Dec 25 04:56 system@6cfacedb39904c2499acffe16d0fd88a-0000000000747d1e-00059a2f7faf1d70.journal
-rw-r-----+ 1 root systemd-journal 56M Dec 21 04:47 system@6cfacedb39904c2499acffe16d0fd88a-0000000000734380-000599df09bbc4a3.journal
-rw-r-----+ 1 root systemd-journal 56M Dec 17 04:48 system@6cfacedb39904c2499acffe16d0fd88a-00000000007209f2-0005998ebb1d505b.journal
-rw-r-----+ 1 root systemd-journal 56M Dec 13 04:59 system@6cfacedb39904c2499acffe16d0fd88a-000000000070d02d-0005993e39fdff2a.journal
-rw-r-----+ 1 root systemd-journal 56M Dec 9 04:57 system@6cfacedb39904c2499acffe16d0fd88a-00000000006f9690-000598edd5ef0719.journal
-rw-r-----+ 1 root systemd-journal 56M Dec 5 05:02 system@6cfacedb39904c2499acffe16d0fd88a-00000000006e5d54-0005989e300b3aa6.journal
-rw-r-----+ 1 root systemd-journal 56M Dec 1 06:01 system@6cfacedb39904c2499acffe16d0fd88a-00000000006d23a4-0005984dfc97fc32.journal
-rw-r-----+ 1 root systemd-journal 56M Nov 27 06:20 system@6cfacedb39904c2499acffe16d0fd88a-00000000006bea28-000597fda900f06e.journal
-rw-r-----+ 1 root systemd-journal 56M Nov 23 06:30 system@6cfacedb39904c2499acffe16d0fd88a-00000000006ab097-000597ad5568adc2.journal
-rw-r-----+ 1 root systemd-journal 56M Nov 19 06:40 system@6cfacedb39904c2499acffe16d0fd88a-0000000000697714-0005975cf155fc13.journal
-rw-r-----+ 1 root systemd-journal 56M Nov 15 06:45 system@6cfacedb39904c2499acffe16d0fd88a-0000000000683d77-0005970c8a737b7b.journal
-rw-r-----+ 1 root systemd-journal 56M Nov 11 06:50 system@6cfacedb39904c2499acffe16d0fd88a-00000000006703c5-000596bbef4870ae.journal
参考 https://blog.steamedfish.org/post/systemd-journald/ 清理journal的内存:mysql
journalctl --vacuum-time=10d
Deleted archived journal /run/log/journal/d14e699e8bbc43228324a169b0f855fe/system@6cfacedb39904c2499acffe16d0fd88a-00000000006703c5-000596bbef4870ae.journal (56.0M).
Deleted archived journal /run/log/journal/d14e699e8bbc43228324a169b0f855fe/system@6cfacedb39904c2499acffe16d0fd88a-0000000000683d77-0005970c8a737b7b.journal (56.0M).
Deleted archived journal /run/log/journal/d14e699e8bbc43228324a169b0f855fe/system@6cfacedb39904c2499acffe16d0fd88a-0000000000697714-0005975cf155fc13.journal (56.0M).
Deleted archived journal /run/log/journal/d14e699e8bbc43228324a169b0f855fe/system@6cfacedb39904c2499acffe16d0fd88a-00000000006ab097-000597ad5568adc2.journal (56.0M).
Deleted archived journal /run/log/journal/d14e699e8bbc43228324a169b0f855fe/system@6cfacedb39904c2499acffe16d0fd88a-00000000006bea28-000597fda900f06e.journal (56.0M).
Deleted archived journal /run/log/journal/d14e699e8bbc43228324a169b0f855fe/system@6cfacedb39904c2499acffe16d0fd88a-00000000006d23a4-0005984dfc97fc32.journal (56.0M).
Deleted archived journal /run/log/journal/d14e699e8bbc43228324a169b0f855fe/system@6cfacedb39904c2499acffe16d0fd88a-00000000006e5d54-0005989e300b3aa6.journal (56.0M).
Deleted archived journal /run/log/journal/d14e699e8bbc43228324a169b0f855fe/system@6cfacedb39904c2499acffe16d0fd88a-00000000006f9690-000598edd5ef0719.journal (56.0M).
Deleted archived journal /run/log/journal/d14e699e8bbc43228324a169b0f855fe/system@6cfacedb39904c2499acffe16d0fd88a-000000000070d02d-0005993e39fdff2a.journal (56.0M).
Deleted archived journal /run/log/journal/d14e699e8bbc43228324a169b0f855fe/system@6cfacedb39904c2499acffe16d0fd88a-00000000007209f2-0005998ebb1d505b.journal (56.0M).
Deleted archived journal /run/log/journal/d14e699e8bbc43228324a169b0f855fe/system@6cfacedb39904c2499acffe16d0fd88a-0000000000734380-000599df09bbc4a3.journal (56.0M).
Deleted archived journal /run/log/journal/d14e699e8bbc43228324a169b0f855fe/system@6cfacedb39904c2499acffe16d0fd88a-0000000000747d1e-00059a2f7faf1d70.journal (56.0M).
Vacuuming done, freed 672.0M of archived journals on disk.
[root@clxcld-gateway-prod d14e699e8bbc43228324a169b0f855fe]# ls
system@6cfacedb39904c2499acffe16d0fd88a-000000000075b6bb-00059a801bbaf6ca.journal system.journal
system@6cfacedb39904c2499acffe16d0fd88a-000000000076f05c-00059ad09a381e0a.journal
继续经过hcache -top 查询,发现journal已经减小了不少linux
[root@clxcld-gateway-prod d14e699e8bbc43228324a169b0f855fe]# hcache --top 10
+-------------------------------------------------------------------------------------------------------------------------------------+----------------+------------+-----------+---------+
| Name | Size (bytes) | Pages | Cached | Percent |
|-------------------------------------------------------------------------------------------------------------------------------------+----------------+------------+-----------+---------|
| /run/log/journal/d14e699e8bbc43228324a169b0f855fe/system@6cfacedb39904c2499acffe16d0fd88a-000000000075b6bb-00059a801bbaf6ca.journal | 58720256 | 14336 | 12242 | 085.393 |
| /run/log/journal/d14e699e8bbc43228324a169b0f855fe/system@6cfacedb39904c2499acffe16d0fd88a-000000000076f05c-00059ad09a381e0a.journal | 58720256 | 14336 | 12226 | 085.282 |
| /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-2.b15.el7_3.x86_64/jre/lib/rt.jar | 72964441 | 17814 | 10463 | 058.735 |
| /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-2.b15.el7_3.x86_64/jre/lib/amd64/server/libjvm.so | 13942784 | 3404 | 3216 | 094.477 |
| /run/log/journal/d14e699e8bbc43228324a169b0f855fe/system.journal | 8388608 | 2048 | 1311 | 064.014 |
| /usr/lib64/dri/swrast_dri.so | 9597216 | 2344 | 1143 | 048.763 |
| /usr/lib64/libmozjs-24.so | 5987032 | 1462 | 1076 | 073.598 |
| /usr/lib64/libgtk-3.so.0.1400.13 | 7116800 | 1738 | 1024 | 058.918 |
| /usr/lib/locale/locale-archive | 106070960 | 25897 | 1024 | 003.954 |
| /usr/lib64/gnome-shell/libgnome-shell.so | 2671456 | 653 | 653 | 100.000 |
+-------------------------------------------------------------------------------------------------------------------------------------+----------------+------------+-----------+---------+
因为journal默认存储方式是auto,而且若是存在目录/var/log/journal则将日志cache到磁盘,不然会缓存到内存中。 所以建立/var/log/journal目录,同时重启journal进程ios
systemctl restart systemd-journal.service
[root@clxcld-gateway-prod journal]# hcache --top 10
+---------------------------------------------------------------------------------------------+----------------+------------+-----------+---------+
| Name | Size (bytes) | Pages | Cached | Percent |
|---------------------------------------------------------------------------------------------+----------------+------------+-----------+---------|
| /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-2.b15.el7_3.x86_64/jre/lib/rt.jar | 72964441 | 17814 | 10463 | 058.735 |
| /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-2.b15.el7_3.x86_64/jre/lib/amd64/server/libjvm.so | 13942784 | 3404 | 3216 | 094.477 |
| /var/log/journal/d14e699e8bbc43228324a169b0f855fe/system.journal | 8388608 | 2048 | 2048 | 100.000 |
| /usr/lib64/dri/swrast_dri.so | 9597216 | 2344 | 1143 | 048.763 |
| /usr/lib64/libmozjs-24.so | 5987032 | 1462 | 1076 | 073.598 |
| /usr/lib64/libgtk-3.so.0.1400.13 | 7116800 | 1738 | 1024 | 058.918 |
| /usr/lib/locale/locale-archive | 106070960 | 25897 | 1024 | 003.954 |
| /usr/lib64/gnome-shell/libgnome-shell.so | 2671456 | 653 | 653 | 100.000 |
| /root/azkaban-3.33.0/azkaban-exec-server-3.33.0/lib/hadoop-common-2.6.1.jar | 3318727 | 811 | 652 | 080.395 |
| /root/azkaban-3.33.0/azkaban-web-server-3.33.0/lib/hadoop-common-2.6.1.jar | 3318727 | 811 | 652 | 080.395 |
+---------------------------------------------------------------------------------------------+----------------+------------+-----------+---------+
从新查询,参考 https://blog.csdn.net/liuxiao723846/article/details/72628847 , system cache没有被当即回收git
[root@clxcld-gateway-prod ~]# echo 1 > /proc/sys/vm/drop_caches
[root@clxcld-gateway-prod ~]#free -g
total used free shared buff/cache available
Mem: 15 1 14 0 0 14
Swap: 3 0 3
强制将cache回收。 github
经常使用排查工具
1) w命令 显示当前登陆用户及占用的资源状况
[tben@hopbox-ops-compass-local ~]$ w
20:17:50 up 69 days, 10:51, 8 users, load average: 3.23, 3.42, 3.54
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
tben pts/2 :1 27Oct19 66days 0.06s 0.06s bash
tvithana pts/6 172.20.100.171 15:15 4:31m 0.05s 0.05s -bash
tben pts/7 172.23.46.21 20:08 6.00s 0.20s 0.09s w
n.kumar pts/8 192.168.127.179 20:12 1:34 0.07s 0.07s -bash
tvithana pts/15 172.20.100.171 14:40 5:36m 0.06s 0.06s -bash
m.afsar pts/16 :17 03Dec19 30days 0.11s 0.11s bash
n.chaudh pts/29 :8 17Dec19 15days 56:12 0.07s bash
d.gawri pts/22 :32 26Dec19 7days 0.10s 0.02s ssh hcldev@compass-jboss.calix.com -p 1035
2)uptime 命令(通常首先会根据最后那个15分钟的load负载为准)
[tben@hopbox-ops-compass-local ~]$ uptime
20:19:44 up 69 days, 10:53, 8 users, load average: 3.33, 3.36, 3.50
3) top 命令
[tben@hopbox-ops-compass-local ~]$ top
top - 20:20:22 up 69 days, 10:53, 8 users, load average: 3.27, 3.35, 3.49
Tasks: 1753 total, 4 running, 1744 sleeping, 0 stopped, 5 zombie
%Cpu(s): 3.2 us, 4.1 sy, 18.5 ni, 74.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 32944340 total, 375788 free, 27034940 used, 5533612 buff/cache
KiB Swap: 8257532 total, 932 free, 8256600 used. 3713268 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
13596 p.sachd+ 39 19 853472 32620 5912 R 88.5 0.1 24032:33 tracker-extract
14821 d.gawri 39 19 1820528 55920 3332 R 84.6 0.2 64011:48 tracker-extract
31326 n.kumar 39 19 757096 13204 2828 R 84.6 0.0 88929:53 tracker-extract
18151 tben 20 0 175496 4888 2300 R 26.9 0.0 0:00.15 top
5091 n.chaud+ 20 0 9479252 400828 4552 S 7.7 1.2 2398:44 java
24683 n.dagar 20 0 10.2g 1.2g 5076 S 7.7 3.7 4991:40 java
15265 d.gawri 20 0 9939848 498224 7260 S 3.8 1.5 3907:38 java
18242 n.chaud+ 20 0 9.8g 1.1g 9208 S 3.8 3.6 3856:41 java
20187 v.gandh+ 20 0 9776.2m 716396 14416 S 3.8 2.2 1908:50 java
25632 rmeng 20 0 4610792 117076 22384 S 3.8 0.4 56:47.21 gnome-shell
27746 a.kumar 20 0 9048676 290672 2220 S 3.8 0.9 2533:07 java
29517 a.kumar 20 0 9391440 260188 2984 S 3.8 0.8 3924:07 java
1 root 20 0 342384 5940 2540 S 0.0 0.0 19:35.06 systemd
2 root 20 0 0 0 0 S 0.0 0.0 1:47.54 kthreadd
说明:
行数 | 样例 | 说明 | 备注 |
第一行 | 20:20:22 | 当前服务器时间 | |
up 69 days | 系统运行时间 | 指上次重启后69运行69天 | |
8 users | 当前有8个用户登陆系统 | ||
load average: 3.27, 3.35, 3.49 | 表示load average后面的三个数分别是1分钟、5分钟、15分钟的负载状况 | load average数据是每隔5秒钟检查一次活跃的进程数,而后按特定算法计算出的数值。
若是这个数除以逻辑CPU的数量,结果高于5的时候就代表系统在超负荷运转了!!!!! |
|
第二行 | 1753 total | 当前总共有1753个进程 | 第二行主要展现任务状态 |
4 running | 有4个正在运行状态 | ||
1744 sleeping | 有1744个正着休眠状态 | ||
0 stopped | 没有中止状态 | ||
5 zombie | 5个僵尸进程 |
孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工做。 僵尸进程:一个进程使用fork建立子进程,若是子进程退出,而父进程并无调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵死进程。 |
|
第三行 | us(user cpu time ) |
用户态使用的cpu时间比 | 该值较高时,说明用户进程消耗的 CPU 时间比较多,好比,若是该值长期超过 50%,则须要对程序算法或代码等进行优化 |
|
系统态使用的cpu时间比 | ||
|
用作 nice 加权的进程分配的用户态cpu时间比 |
||
|
空闲的cpu时间比 | 若是该值持续为0,同时sy是us的两倍,则一般说明系统则面临着 CPU 资源的短缺 | |
|
cpu等待磁盘写入完成时间 | 该值较高时,说明IO等待比较严重,这可能磁盘大量做随机访问形成的,也多是磁盘性能出现了瓶颈。 | |
|
硬中断消耗时间 | ||
|
软中断消耗时间 | ||
|
虚拟机偷取时间 |
4) vmstat
[tben@hopbox-ops-compass-local ~]$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
4 0 8257408 488360 0 5485776 0 0 688 14 0 0 18 1 79 1 0
说明:
指标 | 内容 | 说明 | 备注 |
procs部分 | r | 表示运行和等待cpu时间片的进程数 | 若是长期大于1,说明cpu不足,须要增长cpu。 |
b | 表示在等待资源的进程数 | 好比正在等待I /O 、或者内存交换等。 |
|
cpu部分 | us | 显示了用户方式下所花费 CPU 时间的百分比。 | us的值比较高时,说明用户进程消耗的cpu时间多,可是若是长期大于50%,须要考虑优化用户的程序。 |
sy | 显示了内核进程所花费的cpu时间的百分比。 | 这里us + sy的参考值为80%,若是us+sy 大于 80%说明可能存在CPU不足。 | |
wa | 显示了IO等待所占用的CPU时间的百分比。 | 这里wa的参考值为30%,若是wa超过30%,说明IO等待严重,这多是磁盘大量随机访问形成的,也可能磁盘或者磁盘访问控制器的带宽瓶颈形成的(主要是块操做)。 | |
id | 显示了cpu处在空闲状态的时间百分比 | ||
system部分 | in | 表示在某一时间间隔中观测到的每秒设备中断数。 | |
cs | 表示每秒产生的上下文切换次数 | 如当 cs 比磁盘 I /O 和网络信息包速率高得多,都应进行进一步调查。 |
|
memory部分 | swpd | 切换到内存交换区的内存数量(k表示)。 | 若是swpd的值不为0,或者比较大,好比超过了100m,只要si、so的值长期为0,系统性能仍是正常 |
free |
当前的空闲页面列表中内存数量(k表示) | ||
buff | 做为buffer cache的内存数量 | 通常对块设备的读写才须要缓冲。 | |
cache | 做为page cache的内存数量 | 通常做为文件系统的cache,若是cache较大,说明用到cache的文件较多,若是此时IO中bi比较小,说明文件系统效率比较好。 | |
swap部分 | si | 由内存进入内存交换区数量 | |
so | 由内存交换区进入内存数量。 | ||
IO部分 | bi | 从块设备读入数据的总量(读磁盘)(每秒kb)。 | |
bo | 块设备写入数据的总量(写磁盘)(每秒kb) |
5)dstat命令
root@rancher:/home/calix# dstat
You did not select any stats, using -cdngy by default.
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read writ| recv send| in out | int csw
6 5 89 0 0 0| 75B 214k| 0 0 | 0 11B| 150 8377
4 8 88 0 0 0| 0 376k|1790B 3660B| 0 0 |1835 8633
8 2 90 0 0 0| 0 0 | 69k 88k| 0 0 |1759 8083
8 6 86 0 0 0| 0 336k|2820B 4059B| 0 0 |1730 8096
6)iostat查询IO负载
[root@localhost ~]
# iostat 1 1
Linux 2.6.32-696.16.1.el6.x86_64 (
nc
-ftp01.kevin.cn) 2017年12月29日 _x86_64_ (4 CPU)
avg-cpu: %user %
nice
%system %iowait %steal %idle
19.32 0.00 45.44 0.06 0.26 34.93
Device: tps Blk_read
/s
Blk_wrtn
/s
Blk_read Blk_wrtn
xvda 14.17 29.94 265.17 63120486 558975100
指标 | 说明 | 备注 |
avg-cpu | 整体cpu使用状况统计信息 | 对于多核cpu,这里为全部cpu的平均值 |
%user | 在用户级别运行所使用的CPU的百分比. | |
% nice |
nice 操做所使用的CPU的百分比. |
|
%sys | 在系统级别(kernel)运行所使用CPU的百分比. | |
%iowait | CPU等待硬件I /O 时,所占用CPU百分比. |
|
%idle | CPU空闲时间的百分比. | |
Device段 | 各磁盘设备的IO统计信息 | |
tps | 每秒钟发送到的I /O 请求数. |
|
Blk_read /s |
每秒读取的block数 | |
Blk_wrtn /s |
每秒写入的block数 | |
Blk_read | 读入的block总数 | |
Blk_wrtn | 写入的block总数 |
[root@localhost ~]# iostat -x -k -d 1
Linux 2.6.32-696.el6.x86_64 (centos6-vm02) 01/04/2018 _x86_64_ (4 CPU)
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
scd0 0.00 0.00 0.00 0.00 0.00 0.00 8.00 0.00 0.36 0.36 0.00 0.36 0.00
vda 0.01 0.13 0.04 0.13 0.60 0.89 18.12 0.00 2.78 0.19 3.53 2.55 0.04
dm-0 0.00 0.00 0.04 0.22 0.58 0.88 11.25 0.00 3.27 0.25 3.82 1.61 0.04
dm-1 0.00 0.00 0.00 0.00 0.00 0.00 8.00 0.00 0.13 0.13 0.00 0.04 0.00
dm-2 0.00 0.00 0.00 0.00 0.00 0.00 7.91 0.00 0.19 0.10 5.00 0.16 0.00
指标 | 说明 | 备注 |
rrqm /s |
每秒对该设备的读请求被合并次数 | 文件系统会对读取同块(block)的请求进行合并 |
wrqm /s |
每秒对该设备的写请求被合并次数 | |
r /s |
每秒完成的读次数 | |
w /s |
每秒完成的写次数 | |
rkB /s |
每秒读数据量(kB为单位) | |
|
每秒写数据量(kB为单位) | |
avgrq-sz |
平均每次IO操做的数据量(扇区数为单位) | |
avgqu-sz |
平均等待处理的IO请求队列长度 | |
await |
平均每次IO请求等待时间(包括等待时间和处理时间,毫秒为单位) | |
svctm |
平均每次IO请求的处理时间(毫秒为单位) | |
%util |
采用周期内用于IO操做的时间比率,即IO队列非空的时间比率 |
备注:
若是 %util 接近 100%,说明产生的I
/O
请求太多,I
/O
系统已经满负荷,该磁盘可能存在瓶颈。
- idle小于70% IO压力就较大了,通常读取速度有较多的wait。
- 同时能够结合vmstat 查看查看b参数(等待资源的进程数)和wa参数(IO等待所占用的CPU时间的百分比,高过30%时IO压力高)
手工清除缓存
释放缓存区内存的方法
1)清理pagecache(页面缓存)
[root@backup ~]# echo 1 > /proc/sys/vm/drop_caches 或者 # sysctl -w vm.drop_caches=1
2)清理dentries(目录缓存)和inodes
[root@backup ~]# echo 2 > /proc/sys/vm/drop_caches 或者 # sysctl -w vm.drop_caches=2
3)清理pagecache、dentries和inodes
[root@backup ~]# echo 3 > /proc/sys/vm/drop_caches 或者 # sysctl -w vm.drop_caches=3
上面三种方式都是临时释放缓存的方法,要想永久释放缓存,须要在/etc/sysctl.conf文件中配置:vm.drop_caches=1/2/3,而后sysctl -p生效便可!
另外,可使用sync命令来清理文件系统缓存,还会清理僵尸(zombie)对象和它们占用的内存
[root@backup ~]# sync
舒适提示:
上面操做在大多数状况下都不会对系统形成伤害,只会有助于释放不用的内存。
可是若是在执行这些操做时正在写数据,那么实际上在数据到达磁盘以前就将它从文件缓存中清除掉了,这可能会形成很很差的影响。
那么若是避免这种事情发生呢?
所以,这里不得不提一下/proc/sys/vm/vfs_cache_pressure这个文件,告诉内核,当清理inoe/dentry缓存时应该用什么样的优先级。
[root@backup ~]# cat /proc/sys/vm/vfs_cache_pressure
100
vfs_cache_pressure=100 这个是默认值,内核会尝试从新声明dentries和inodes,并采用一种相对于页面缓存和交换缓存比较"合理"的比例。
减小vfs_cache_pressure的值,会致使内核倾向于保留dentry和inode缓存。
增长vfs_cache_pressure的值,(即超过100时),则会致使内核倾向于从新声明dentries和inodes
总之,vfs_cache_pressure的值:
小于100的值不会致使缓存的大量减小
超过100的值则会告诉内核你但愿以高优先级来清理缓存。
其实不管vfs_cache_pressure的值采用什么值,内核清理缓存的速度都是比较低的。
若是将此值设置为10000,系统将会将缓存减小到一个合理的水平。
======================================================
这里顺便说下本身遇到的一个内存问题:
IDC机房有一台专门的备份服务器,天天凌晨执行多个备份脚本。某天早上忽然发现收到不少条zabbix监控报警信息:这台备份服务器的内存使用了已超过80%!
因而,赶忙登录这台备份服务器,使用free命令查看内存使用状况:
[root@backup ~]# free -m
total used free shared buffers cached
Mem: 64181 48585 15596 3 2 18
-/+ buffers/cache: 48564 15617
Swap: 32767 0 3276
确实发现内存使用率已超过80%!可是使用"top"命令查看,发现此时并无什么进程在占用内存,而且本机是备份服务器,只有晚上执行备份脚本,
其余时间都没有服务进程在跑!因而尝试手动释放内存:
[root@backup ~]# echo 1 > /proc/sys/vm/drop_caches
[root@backup ~]# echo 2 > /proc/sys/vm/drop_caches
[root@backup ~]# echo 3 > /proc/sys/vm/drop_caches
[root@backup ~]# sync
发如今执行了上面第三条命令后,内存才真正被释放出来了,其余命令都没有起到效果。
名词解释
缓存(cached)是把读取过的数据保存起来,从新读取时若命中(找到须要的数据)就不要去读硬盘了,若没有命中就读硬盘。其中的数据会根据读取频率进行组织,把最频繁读取的内容放在最容易找到的位置,把再也不读的内容不断日后排,直至从中删除。
缓冲(buffers)是根据磁盘的读写设计的,把分散的写操做集中进行,减小磁盘碎片和硬盘的反复寻道,从而提升系统性能。linux有一个守护进程按期清空缓冲内容(即写入磁盘),也能够经过sync命令手动清空缓冲。
二者都是RAM中的数据,简单来讲,buffer是即将要被写入磁盘的,而cache是被从磁盘中读出来的。
buffer是由各类进程分配的,被用在如输入队列等方面。一个简单的例子如某个进程要求有多个字段读入,在全部字段被读入完整以前,进程把先前读入的字段放在buffer中保存。
cache常常被用在磁盘的I/O请求上,若是有多个进程都要访问某个文件,因而该文件便被作成cache以方便下次被访问,这样可提升系统性能。
Cache:缓冲区,高速缓存,是位于CPU与主内存间的一种容量较小但速度很高的存储器。因为CPU的速度远高于主内存,CPU直接从内存中存取数据要等待必定时间周期,Cache中保存着CPU刚用过或循环使用的一部分数据,当CPU再次使用该部分数据时可从Cache中直接调用,这样就减小了CPU的等待时间,提升了系统的效率。Cache又分为一级Cache(L1 Cache)和二级Cache(L2 Cache),L1 Cache集成在CPU内部,L2 Cache早期通常是焊在主板上,如今也都集成在CPU内部,常见的容量有256KB或512KB L2 Cache。它是根据程序的局部性原理而设计的,就是cpu执行的指令和访问的数据每每在集中的某一块,因此把这块内容放入cache后,cpu就不用在访问内存了,这就提升了访问速度。固然若cache中没有cpu所须要的内容,仍是要访问内存的。从内存读取与磁盘读取角度考虑,cache能够理解为操做系统为了更高的读取效率,更多的使用内存来缓存可能被再次访问的数据。
Cache并非缓存文件的,而是缓存块的(块是I/O读写最小的单元);Cache通常会用在I/O请求上,若是多个进程要访问某个文件,能够把此文件读入Cache中,这样下一个进程获取CPU控制权并访问此文件直接从Cache读取,提升系统性能。
Buffer:缓冲区,一个用于存储速度不一样步的设备或优先级不一样的设备之间传输数据的区域。经过buffer能够减小进程间通讯须要等待的时间,当存储速度快的设备与存储速度慢的设备进行通讯时,存储慢的数据先把数据存放到buffer,达到必定程度存储快的设备再读取buffer的数据,在此期间存储快的设备CPU能够干其余的事情。
Buffer:通常是用在写入磁盘的,例如:某个进程要求多个字段被读入,当全部要求的字段被读入以前已经读入的字段会先放到buffer中。Buffer是根据磁盘的读写设计的,把分散的写操做集中进行,减小磁盘碎片和硬盘的反复寻道,从而提升系统性能。linux有一个守护进程按期清空缓冲内容(即写入磁盘),也能够经过sync命令手动清空缓冲。
cache是高速缓存,用于CPU和内存之间的缓冲;
buffer是I/O缓存,用于内存和硬盘的缓冲;
cache最初用于cpu cache,主要缘由是cpu 与memory,因为cpu快,memory跟不上,且有些值使用次数多,因此放入cache中,主要目的是,重复使用,而且一级\二级物理cache速度快,
buffer主要用于disk与 memory,主要是保护硬盘或减小网络传输的次数(内存数据表现dataSet).固然也能够提升速度(不会当即写入硬盘或直接从硬盘中读出的数据立刻显示),重复使用,最初最主要的目的是保护disk,
Free中的buffer和cache:(它们都是占用内存):
buffer : 做为buffer cache的内存,是块设备的读写缓冲区
cache: 做为page cache的内存, 文件系统的cache
若是 cache 的值很大,说明cache住的文件数不少。若是频繁访问到的文件都能被cache住,那么磁盘的读IO bi会很是小。
参考
- linux内存占用问题调查——cached
- systemd攻略
- Systemd
- Systemd(IBM)
- systemd-journald.service 中文手册
- systemd/Journal (简体中文)
- https://github.com/silenceshell/hcache
- Linux查看哪些进程占用的系统 buffer/cache 较高 (hcache,lsof)命令
- linux下的缓存机制buffer、cache、swap - 运维总结 ["Cannot allocate memory"问题]
- 孤儿进程与僵尸进程[总结]