CPU内存磁盘IO过高问题处理

2023-11-16

CPU占用过高分析


可以用top命令查看哪一个进程占用cpu高 或者哪一个占用内存大

top - 13:55:32 up 59 days, 19:18,  2 users,  load average: 0.00, 0.04, 0.09
Tasks: 161 total,   1 running, 160 sleeping,   0 stopped,   0 zombie
%Cpu(s):  3.7 us,  0.3 sy,  0.0 ni, 96.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 16267564 total,   271608 free,  9033932 used,  6962024 buff/cache
KiB Swap:  8388604 total,  8364736 free,    23868 used.  5913400 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                                              
29433 wuuser    20   0 7805852 1.132g  19216 S   0.7  7.3   6:07.13 java                                                                                                                                                                 
29355 wuuser    20   0 6909304 1.093g  17248 S   0.3  7.0   2:29.96 java                                                                                                                                                                 
29558 wuuser    20   0 7763476 974788  15860 S   0.3  6.0   1:54.47 java                                                                                                                                                                 
29945 wuuser    20   0 7793536 1.202g  21344 S   0.3  7.7   4:31.02 java

可以看到占用最高的是29433

top -H -p pid(例:top -Hp 29433)命令查看进程内各个线程占用的CPU百分比 cpu消耗情况

 top -H -p 29433
top - 13:58:57 up 59 days, 19:22,  2 users,  load average: 0.04, 0.07, 0.10
Threads: 132 total,   0 running, 132 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.1 us,  0.0 sy,  0.0 ni, 99.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 16267564 total,   271024 free,  9034476 used,  6962064 buff/cache
KiB Swap:  8388604 total,  8364736 free,    23868 used.  5913044 avail Mem 
  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                                                                                                               
29433 wuuser    20   0 7805852 1.132g  19216 S  0.0  7.3   0:00.00 java                                                                                                                                                                  
29436 wuuser    20   0 7805852 1.132g  19216 S  0.0  7.3   0:08.91 java                                                                                                                                                                  
29437 wuuser    20   0 7805852 1.132g  19216 S  0.0  7.3   0:00.34 java                                                                                                                                                                  
29438 wuuser    20   0 7805852 1.132g  19216 S  0.0  7.3   0:00.35 java                                                                                                                                                                  
29439 wuuser    20   0 7805852 1.132g  19216 S  0.0  7.3   0:00.34 java                                                                                                                                                                  
29440 wuuser    20   0 7805852 1.132g  19216 S  0.0  7.3   0:00.34 java                                                                                                                                                                  
29441 wuuser    20   0 7805852 1.132g  19216 S  0.0  7.3   0:00.34 java

上面看到线程29436占用高时长多

接着 使用printf "%x\n" 线程号将异常线程号转化为16进制

printf "%x\n" 29436
72fc

接着使用gstack 29433|grep 72fc -A90 来定位出现异常的代码

 jstack 29433|grep 72fc -A90

"main" prio=10 tid=0x00007f16fc00e000 nid=0x72fc in Object.wait() [0x00007f17056d9000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x0000000778044670> (a java.lang.Class for com.wu.mortgage.service.OrderServiceStartup)
        at java.lang.Object.wait(Object.java:503)
        at com.wu.mortgage.service.OrderServiceStartup.main(OrderServiceStartup.java:47)
        - locked <0x0000000778044670> (a java.lang.Class for com.wu.mortgage.service.OrderServiceStartup)

"VM Thread" prio=10 tid=0x00007f16fc14a000 nid=0x7309 runnable 

"Gang worker#0 (Parallel GC Threads)" prio=10 tid=0x00007f16fc01f800 nid=0x72fd runnable 

"Gang worker#1 (Parallel GC Threads)" prio=10 tid=0x00007f16fc021800 nid=0x72fe runnable 

"Gang worker#2 (Parallel GC Threads)" prio=10 tid=0x00007f16fc023000 nid=0x72ff runnable 

"Gang worker#3 (Parallel GC Threads)" prio=10 tid=0x00007f16fc025000 nid=0x7300 runnable 

"Gang worker#4 (Parallel GC Threads)" prio=10 tid=0x00007f16fc027000 nid=0x7301 runnable 

"Gang worker#5 (Parallel GC Threads)" prio=10 tid=0x00007f16fc029000 nid=0x7302 runnable 

"Gang worker#6 (Parallel GC Threads)" prio=10 tid=0x00007f16fc02b000 nid=0x7303 runnable 

"Gang worker#7 (Parallel GC Threads)" prio=10 tid=0x00007f16fc02d000 nid=0x7304 runnable 

"Concurrent Mark-Sweep GC Thread" prio=10 tid=0x00007f16fc106800 nid=0x7307 runnable 
"Gang worker#0 (Parallel CMS Threads)" prio=10 tid=0x00007f16fc102000 nid=0x7305 runnable 

"Gang worker#1 (Parallel CMS Threads)" prio=10 tid=0x00007f16fc104000 nid=0x7306 runnable 

"VM Periodic Task Thread" prio=10 tid=0x00007f16fcbed800 nid=0x7314 waiting on condition 

JNI global references: 522

CPU使用率较低但负载较高

问题描述:

Linux 系统没有业务程序运行,通过 top 观察,类似如下图所示,CPU 很空闲,但是 load average 却非常高:

在这里插入图片描述

处理办法:

load average 是对 CPU 负载的评估,其值越高,说明其任务队列越长,处于等待执行的任务越多。
出现此种情况时,可能是由于僵死进程导致的。可以通过指令 ps -axjf  查看是否存在 D 状态进程。
D 状态是指不可中断的睡眠状态。该状态的进程无法被 kill,也无法自行退出。只能通过恢复其依赖的资源或者重启系统来解决。

内存过高

使用free -h 查看内存使用情况

 free -h
                  total        used        free      shared  buff/cache   available
    Mem:            15G        8.6G        274M        854M        6.6G        5.7G
    Swap:          8.0G         23M        8.0G

使用top -m查看内存可以看到使用率/总内存 KiB Mem : 63.6/16267564

top - 14:32:12 up 59 days, 19:55,  2 users,  load average: 0.01, 0.06, 0.05
Tasks: 160 total,   1 running, 159 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.8 us,  0.2 sy,  0.0 ni, 98.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 63.6/16267564 [|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||                                     ]
KiB Swap:  0.3/8388604  [                                                                                                    ]

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                                              
 1515 wuuser    20   0  157716   2288   1536 R   0.7  0.0   0:00.13 top                                                                                                                                                                  
10262 root      20   0       0      0      0 S   0.3  0.0   0:00.31 kworker/2:1                                                                                                                                                          
29433 wuuser    20   0 7806112 1.133g  19216 S   0.3  7.3   6:23.73 java                                                                                                                                                                 
29754 wuuser    20   0 6991120 764416  11932 S   0.3  4.7   5:50.32 java                                                                                                                                                                 
29945 wuuser    20   0 7793536 1.202g  21344 S   0.3  7.7   4:41.44 java                                                                                                                                                                 
    1 root      20   0  191152   3040   2108 S   0.0  0.0  10:59.88 systemd                                                                                                                                                              
    2 root      20   0       0      0      0 S   0.0  0.0   0:01.54 kthreadd                                                                                                                                                             
    3 root      20   0       0      0      0 S   0.0  0.0   0:11.69 ksoftirqd/0                                                                                                                                                          
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H                                                                                                                                                         
    7 root      rt   0       0      0      0 S   0.0  0.0   0:04.75 migration/0

cat /proc/meminfo

MemTotal:       16267564 kB
MemFree:          279388 kB
MemAvailable:    5926640 kB
Buffers:               0 kB
Cached:          6471844 kB
SwapCached:          708 kB
Active:         11110540 kB
Inactive:        4181420 kB
Active(anon):    8299564 kB
Inactive(anon):  1395416 kB
Active(file):    2810976 kB
Inactive(file):  2786004 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       8388604 kB
SwapFree:        8364736 kB
Dirty:               192 kB
Writeback:             0 kB
AnonPages:       8819440 kB
Mapped:            98168 kB
Shmem:            874860 kB
Slab:             495476 kB
SReclaimable:     388612 kB
SUnreclaim:       106864 kB
KernelStack:       16560 kB
PageTables:        27572 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    16522384 kB
Committed_AS:   27461628 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      179248 kB
VmallocChunk:   34359341052 kB
HardwareCorrupted:     0 kB
AnonHugePages:   7559168 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       81856 kB
DirectMap2M:    16695296 kB

查看占用内存最大的10个进程:

ps -aux | sort -k4nr | head -n 10

查看内存占用最大的进程的命令:

ps aux| grep -v “USER” |sort -n -r -k 4 |awk ‘NR==1{ print $0}’


io 过高现象 iostat 查看io情况

linux机器wa%过高

top
top - 15:35:47 up 265 days, 23:08,  6 users,  load average: 0.03, 0.12, 0.13
Tasks: 203 total,   1 running, 202 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.1 us,  0.2 sy,  0.0 ni, 98.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 18497460 total,   581076 free,  3876592 used, 14039792 buff/cache
KiB Swap:  4063228 total,  4003928 free,    59300 used. 13227728 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                                              
12850 root      20   0 9316608 335148  11836 S  11.1  1.8 104:05.35 java                                                                                                                                                                 
    1 root      20   0   44188   6664   3916 S   0.0  0.0 216:00.79 systemd                                                                                                                                                              
    2 root      20   0       0      0      0 S   0.0  0.0   0:24.61 kthreadd                                                                                                                                                             
    3 root      20   0       0      0      0 S   0.0  0.0   0:11.27 ksoftirqd/0                                                                                                                                                          
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H

us:用户态使用的cpu时间比

sy:系统态使用的cpu时间比

ni:用做nice加权的进程分配的用户态cpu时间比

id:空闲的cpu时间比

wa:cpu等待磁盘写入完成时间

hi:硬中断消耗时间

si:软中断消耗时间

st:虚拟机偷取时间

如果一台机器看到wa特别高,那么一般说明是磁盘IO出现问题,可以使用iostat等命令继续进行详细分析。

安装iostat

yum install sysstat

安装后就可以使用iostat命令了

iostat -d -k 2

参数 -d 表示,显示设备(磁盘)使用状态;-k某些使用block为单位的列强制使用Kilobytes为单位;2表示,数据显示每隔2秒刷新一次。

iostat -d -k 2
Linux 3.10.0-327.el7.x86_64 (szfyruat01)        07/11/2018      _x86_64_        (8 CPU)

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.98        10.34         9.89  237682005  227295642
sdb               0.64         0.79         9.37   18104315  215368108
dm-0              1.46         1.24        19.26   28388124  442501536
dm-1              0.00         0.00         0.01      39692     127628

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.50         4.00         0.00          8          0
sdb               0.00         0.00         0.00          0          0
dm-0              0.50         4.00         0.00          8          0
dm-1              0.00         0.00         0.00          0          0

tps:该设备每秒的传输次数(Indicate the number of transfers per second that were
issued to the
device.)。“一次传输"意思是"一次I/O请求”。多个逻辑请求可能会被合并为"一次I/O请求"。"一次传输"请求的大小是未知的。

kB_read/s:每秒从设备(drive expressed)读取的数据量; kB_wrtn/s:每秒向设备(drive
expressed)写入的数据量; kB_read:读取的总数据量;

kB_wrtn:写入的总数量数据量;这些单位都为Kilobytes。

指定监控的设备名称为sda,该命令的输出结果和上面命令完全相同

iostat -d sda 2
Linux 3.10.0-327.el7.x86_64 (szfyruat01)        07/11/2018      _x86_64_        (8 CPU)

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.98        10.34         9.89  237685197  227298479

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.00         0.00         0.00          0          0

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.00         0.00         0.00          0          0

iostat还有一个比较常用的选项-x,该选项将用于显示和io相关的扩展数据。

iostat -d -x -k 1 10

iostat -d -x -k 1 10
Linux 3.10.0-327.el7.x86_64 (szfyruat01)        07/11/2018      _x86_64_        (8 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
sda               0.00     0.07    0.31    0.68    10.34     9.89    41.10     0.00    4.25    1.36    5.55   0.90   0.09
sdb               0.00     0.13    0.10    0.54     0.79     9.37    31.86     0.00    5.82    0.55    6.77   1.55   0.10
dm-0              0.00     0.00    0.05    1.42     1.24    19.26    28.02     0.01    6.20    1.83    6.35   0.96   0.14
dm-1              0.00     0.00    0.00    0.00     0.00     0.01     8.04     0.00    9.08    4.77   10.39   0.69   0.00

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
sdb               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
dm-0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
dm-1              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00

rrqm/s:每秒这个设备相关的读取请求有多少被Merge了(当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,

FS会将这个请求合并Merge);

wrqm/s:每秒这个设备相关的写入请求有多少被Merge了。

rsec/s:每秒读取的扇区数;

wsec/:每秒写入的扇区数。

rKB/s:The number of read requests that were issued to the device per
second;

wKB/s:The number of write requests that were issued to the device per
second;

avgrq-sz 平均请求扇区的大小

avgqu-sz 是平均请求队列的长度。毫无疑问,队列长度越短越好。

await:
每一个IO请求的处理的平均时间(单位是微秒毫秒)。这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。

这个时间包括了队列时间和服务时间,也就是说,一般情况下,await大于svctm,它们的差值越小,则说明队列时间越短,反之差值越大,队列时间越长,说明系统出了问题。

svctm
表示平均每次设备I/O操作的服务时间(以毫秒为单位)。如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,

则表示I/O队列等待太长,

系统上运行的应用程序将变慢。

%util: 在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,

而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,

所以该参数暗示了设备的繁忙程度

。一般地,如果该参数是100%表示设备已经接近满负荷运行了

(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。

常见用法

iostat -d -k 1 10         #查看TPS和吞吐量信息(磁盘读写速度单位为KB)
iostat -d -m 2            #查看TPS和吞吐量信息(磁盘读写速度单位为MB)
iostat -d -x -k 1 10      #查看设备使用率(%util)、响应时间(await) iostat -c 1 10 #查看cpu状态

查找引起高I/O wait 对应的进程

yum -y install iotop

查找引起高I/O wait 对应的进程

[root@localhost ~]# iotop

 iotop
30475 be/4 root        2.80 K/s    0.00 B/s  0.00 %  0.00 % [cifsd]
Total DISK READ :    1915.31 B/s | Total DISK WRITE :      22.44 K/s
Actual DISK READ:       0.00 B/s | Actual DISK WRITE:       0.00 B/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND                                                                                                                                                                   
20041 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.07 % java -Djava.util.logging.config.file=/home/rizhi/apache-tomcat-7.0.88/conf/logging.pro~pdir=/home/rizhi/apache-tomcat-7.0.88/temp org.apache.catalina.startup.Bootstrap start
12881 be/4 root        0.00 B/s   14.96 K/s  0.00 %  0.00 % java -Djava.util.logging.config.file=/home/rizhi/apache-tomcat-7.0.88/conf/logging.pro~pdir=/home/rizhi/apache-tomcat-7.0.88/temp org.apache.catalina.startup.Bootstrap start
13150 be/4 agent       0.00 B/s    3.74 K/s  0.00 %  0.00 % falcon-agent -c /open-falcon/agent/config/cfg.json
30475 be/4 root     1915.31 B/s    0.00 B/s  0.00 %  0.00 % [cifsd]
20607 be/4 root        0.00 B/s    3.74 K/s  0.00 %  0.00 % java -Djava.util.logging.config.file=/home/rizhi/apache-tomcat-7.0.88/conf/logging.pro~pdir=/home/rizhi/apache-tomcat-7.0.88/temp org.apache.catalina.startup.Bootstrap start
 4096 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % dockerd --insecure-registry 192.168.16.184:5000 --log-opt max-size=100m --log-opt max-file=3 --insecure-registry 192.168.34.138:5000
    1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % systemd --system --deserialize 26
    2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]
    3 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/0]
 4100 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % docker-containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --met~un/docker/libcontainerd/containerd --shim docker-containerd-shim --runtime docker-runc
    5 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/0:0H]
 4102 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % docker-containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --met~un/docker/libcontainerd/containerd --shim docker-containerd-shim --runtime docker-runc
    7 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/0]

名称

iotop - 简单的top类I/O监视器

总览

iotop [OPTIONS]

描述

iotop根据Linux内核(需要2.6.20及以上)来监测I/O,并且能显示当前进程/线程的I/O使用率。
Linux内核build的事后哦,需要开启CONFIG_TASK_DELAY_ACCT和CONFIG_TASK_IO_ACCOUNTING选项,这些选项依赖于CONFIG_TASKSTATS。
在采样周期里,iotop按列显示每个进程/线程的I/O读写带宽,同时也显示进程/线程做swap交换和等待I/O所占用的百分比。
每一个进程都会显示I/O优先级(class/level),另外在最上面显示每个采样周期内的读写带宽。
使用左右箭头来改变排序,r用来改变排序顺序,o用来触发–only选项,p用来触发–processes选项。
a用来触发–accumulated选项,q用来退出,i用来改变进程或线程的监测优先级,其它任继健是强制刷新。

选项

–version 显示版本号然后退出
-h, --help 显示帮助然后退出
-o, --only 只显示正在产生I/O的进程或线程。除了传参,可以在运行过程中按o生效。
-b, --batch 非交互模式,一般用来记录日志
-n NUM, --iter=NUM 设置监测的次数,默认无限。在非交互模式下很有用
-d SEC, --delay=SEC 设置每次监测的间隔,默认1秒,接受非×××数据例如1.1
-p PID, --pid=PID 指定监测的进程/线程
-u USER, --user=USER 指定监测某个用户产生的I/O
-P, --processes 仅显示进程,默认iotop显示所有线程
-a, --accumulated 显示累积的I/O,而不是带宽
-k, --kilobytes 使用kB单位,而不是对人友好的单位。在非交互模式下,脚本编程有用。
-t, --time 加上时间戳,非交互非模式。
-q, --quiet 禁止头几行,非交互模式。有三种指定方式。
-q 只在第一次监测时显示列名
-qq 永远不显示列名。
-qqq 永远不显示I/O汇总。

只显示有I/O行为的进程

iotop -oP
Total DISK READ :      18.12 K/s | Total DISK WRITE :       7.63 K/s
Actual DISK READ:       0.00 B/s | Actual DISK WRITE:       0.00 B/s
  PID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND                                                                                                                                                                   
12850 be/4 root        0.00 B/s    7.63 K/s  0.00 %  0.01 % java -Djava.util.logging.config.file=/home/rizhi/apache-tomcat-7.0.88/conf/logging.pro~pdir=/home/rizhi/apache-tomcat-7.0.88/temp org.apache.catalina.startup.Bootstrap start
30475 be/4 root       18.12 K/s    0.00 B/s  0.00 %  0.00 % [cifsd]
内存过高

查看占用内存最大的10个进程:

top 也可以

ps -aux | sort -k4nr | head -n 10

io过高 首先查看哪些进程的io过高(用top查看是否很高,让后用iostat -x -d 1 定哪个设备IO负载高)

然后用iotop -oP 查看哪一个进程的io高 也可以用iostat -x -d 1 定哪个设备IO负载高

确定的进程pid后,可以用ps -ef |grep pid 查看哪一个应用引起的,看看是否需要重启服务 减少io

也可以用top -H -p pid 查看这个进程中线程消耗资源情况

Linux内存清理/释放命令

内存的管理方式是在/proc/sys/vm/drop_chches文件中,一定要注意这个文件中存放的并不是具体的内存内容,

而是0-3这几个数字,通过文件大小只有1B,这些代号分别告诉系统代表不同的含义如下:

0:0是系统默认值,默认情况下表示不释放内存,由操作系统自动管理

1:释放页缓存

2:释放dentries和inodes

3:释放所有缓存

释放内存操作:

首先我们需要使用sync指令,将所有未写的系统缓冲区写到磁盘中

包含已修改的 i-node、已延迟的块 I/O 和读写映射文件,

否则在释放缓存的过程中,可能会丢失未保存的文件,

接下来,我们需要将需要的参数写进/proc/sys/vm/drop_caches文件中

内存释放完了后,如果现在想让操作系统重新分配内存,那么设置drop_caches的值为0即可

命令: sync && echo 3 > /proc/sys/vm/drop_caches && echo 0 > /proc/sys/vm/drop_caches
翻译至51CTO博客(supper李导),原文链接

https://blog.51cto.com/superleedo/2140497

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CPU内存磁盘IO过高问题处理 的相关文章

  • 【导航算法】S型速度规划笔记

    S型速度规划笔记 一 S型速度规划逻辑整理 1 根据q1 q0和速度 判断是否在约束条件下 可以规划出S型速度规划 2 假设可以找到合适的S型速度规划 确定相应的参数v max和a max a 判断是否可以达到最大速度 v max 和加速度
  • Nacos用做配置中心时启动报错SocketTimeoutException http://localhost:8848

    当使用nacos作为注册中心时 很顺利 进如下配置 仅仅配置了ip和端口 启动类加 EnableDiscoveryClient注解 nacos作为配置中心 当继续将nacos作为配置中心时 添加加依赖
  • Oracle 中的外键约束

    一 前言 在Oracle数据库中 外键是用来实现參照完整性的方法之中的一个 打个比喻 外键是指定义外键的表的列的值必须在还有一个表中出现 被參照的表称之为父表 parent table 创建外键的表称之为子表 child table 子表中
  • Samba CentOS 7 安装

    安装步骤 Samba是在Linux与Windows系统间共享文件和打印机的标准协议 要在CentOS上安装Samba 可以按以下步骤操作 安装Samba相关包 yum install samba samba client samba com
  • 【Linux】SSH、shell

    最近GET到一个学习方法 了解一个新知识是什么的最快方法 就是去看它官网首页最大的那行字 一 比如SSH到底是什么 如下图 答案 SSH就是一个安全的shell应用程序 SSH是一个软件包 使系统登陆和文件传输都建立在一个安全的网络上 二
  • C++11新特性——智能指针之shared_ptr

    此课件及源代码来自B站up主 码农论坛 该文章仅作为本人学习笔记使用 1 智能指针shared ptr shared ptr共享它指向的对象 多个shared ptr可以指向 关联 相同的对象 在内部采用计数机制来实现 当新的shared
  • Java-如何使用Java将图片和文字拼接在一起(并非是给图片加水印)

    之前有遇到一个问题 问题背景 项目中 有一个功能 管理端可以将客户创建的小程序码下载到本地 方便客户将对应门店的小程序码打印出来并张贴到门店 做门店的引流和会员入会 具体问题 当小程序码的数量较少的时候 我们是后端将小程序码的分组信息和小程
  • OnCheckedChangeListener和setChecked之间冲突问题解决

    今天遇到一个奇怪的问题 hdmi设备的usb触屏线 Usb接口 在拔掉的时候 界面的Checkbox Switch等控件会响应CompoundButton OnCheckedChangeListener 很明显 通过debug debug模
  • bugku ctf web4 (看看源代码吧)

    打开打开 刚刚有个sb问我借lol号玩 浪费时间 继续干正事 随便输入后 提示 再好好看看 出题人语文肯定不好 应该是这个 再 吧 那我们查看源码

随机推荐

  • 深聊性能测试,从入门到放弃之:Locust性能自动化(一)初识Locust

    初识Locust 1 Locust基本介绍 1 1 引言 1 2 简介 2 Locust安装方式 2 1 安装 locust 2 2 安装pyzmq 2 3 安装成功确认 3 Locust 参数说明 3 1 参数信息 3 2 参数信息解析
  • Android视频开发

    http www jianshu com u a32db45d4859
  • Windows 批量重命名文件(支持正则表达式)

    今天整理了一批文件 命名有点上乱 所以想批量修改一下 在网上找了一工具 叫Ant Renamer 相当不错 主界面如下 操作步骤很简单 1 添加文件或文件夹 支持自动递所有子目录 2 操作 在这里设置重命名的参数 3 然后点击 开始 即可
  • 读取文件大小(小数点后保留两位)

    获取文件大小 public static String getSize File file double d DecimalFormat df new DecimalFormat 00 long length file length if
  • 配额限制出现“limit函数未实现”解决方法

    磁盘配额限制的步骤分为 安装quota和xfsprogs软件包 制定挂载条件 mount o usrquota grpquota dev 卷组名 逻辑卷名 限制磁盘使用量空间 xfs quota x c limit u bsoft 80M
  • 时序图中if else画法

    进入扩展程序安装 File gt Settings gt Plugins gt Browse Repositories 搜索 SequenceDiagram 点击右边 Install 安装 然后重启 IDEA 在需要生成流程时序图的方法 右
  • 企业网络安全设计与综合实施方案

    1 企业网络安全需求 企业网络安全需求大致分为三部分 但是在设计对应的网络安全技术方案时 通常根据企业结构划分网络 从五个方面制定方案 某游戏公司当前的企业网络拓扑如右图所示 考虑到该公司运行的业务可能面临众多安全威胁 需要网络实施工程师针
  • 《离散数学》速成-练习题答案(含题目)

    离散数学 速成 https blog csdn net aiqq136 article details 113445181 课时1 课时2 课时3 课时4 课时5 课时6 课时7 课时8 课时9 课时10 课时11 课时12 课时13 课时
  • Scrapy初识与创建

    Scrapy 是一套基于基于Twisted的异步处理框架 纯python实现的爬虫框架 用户只需要定制开发几个模块就可以轻松的实现一个爬虫 用来抓取网页内容以及各种图片 非常之方便 一 安装 Scrapy框架因为功能十分强大 所以依赖很多库
  • coverage代码覆盖率测试工具:基本原理分析与使用

    coverage环境描述 本文环境python3 5 2 coverage版本4 3 1 coverage概述 代码覆盖率工具主要是为了检查测试用例覆盖了多少业务处理代码 在Django项目中 通过编写的测试用例 来检查后端业务逻辑接口的逻
  • Struts2验证框架

    1 Struts2提供了验证框架 功能强大而且简单易用 帮助用户做了很多事情 使得用户不必从头开发 那么一个好的验证框架需要考虑哪些因素呢 1 验证功能的复用性 比如都是对一个int数据类型的验证 验证的是它的数据范围 如果验证功能抽象的好
  • Intellij IDEA炫酷的插件

    1 日晒主题 Solarized Themes 背景图可是另外的插件设置的哈Background Image Plus 在 IntelliJ 系列编辑器 中循环显示随机背景图像 可以通过设置页 Settings gt Appearance
  • 别再问我怎么Python打包成exe了!

    作者 Python进阶者来源 Python爬虫与数据挖掘 阅读文本大概需要 10 分钟 前言 也许我们不一定是专业的程序员 但是我们仍然可以通过代码提高我们的效率 尽量少加班 多陪陪媳妇 如果有 再不行 让代码替我们干着重复的工作 我们有节
  • BigDecimal保留两位小数

    天行健 君子以自强不息 地势坤 君子以厚德载物 每个人都有惰性 但不断学习是好好生活的根本 共勉 文章均为学习整理笔记 分享记录为主 如有错误请指正 共同学习进步 BigDecimal保留两位小数 保留两位小数 1 setScale 2 D
  • vue脚手架-上传图片 编辑修改图片(三)

    需求 点击编辑图案的时候 需要弹出框 里面除了能修改图片信息之外 还得能够更换图片 此篇文章主要讲述如何更换图片 因为时更改单张图片的 所以特别想更换头像 有没有 因此我使用了element ui中的更换头像的插件来写的 H5中更换图片的部
  • Flutter 完整示例

    经过这一段对 Flutter 的了解和接触 掌握如何完整使用 Flutter 开发一个项目 实际上 在 Flutter 中 一切皆 widget 我们的界面都是由各种 widget 堆叠出来的 一个 Flutter 工程涉及以下几个要点 工
  • WINDOWS窗体应用程序与WPF应用程序的区别?

    WINDOWS窗体应用程序与WPF应用程序的区别 用WPF更容易做的漂亮 感觉有以下几个大区别 WPF的线程模型和winform的线程模型不同 WPF到处用到数据绑定 winform在列表中才用的多 WPF支持3D winform本身没有
  • Ubuntu20.04安装NVIDIA混合精度计算库apex全流程及各类报错问题解答

    目录 一 安装CUDA 二 安装apex 三 各类报错问题解决 3 1 C 编译错误 3 2 Apex优化算子错误 3 3 CUDA错误 3 4 g 或gcc错误 背景 跟李沐老师一起探索RTX 3090的深度学习浮点运算性能 需要安装ap
  • 登录界面BootStramp模板

    一 效果图 二 代码部分
  • CPU内存磁盘IO过高问题处理

    CPU占用过高分析 可以用top命令查看哪一个进程占用cpu高 或者哪一个占用内存大 top 13 55 32 up 59 days 19 18 2 users load average 0 00 0 04 0 09 Tasks 161 t