“free -g”和top报告MySQL服务器上内存使用情况有很大差异

“free -g”和top报告MySQL服务器上内存使用情况有很大差异

我知道缓冲区、缓存、交换等,但有人能向我解释一下这个吗?

首先,这是 TOP 输出按内存使用量排序。请注意,MySQL 占用了系统中 39.4% 的 RAM。其他所有进程占用的 RAM 都很少,因此报告为零:

Tasks: 728 total,   2 running, 726 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.8 us,  1.8 sy,  0.0 ni, 97.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem : 225344.3 total,   4238.5 free, 217754.1 used,   3351.8 buff/cache
MiB Swap:   8192.0 total,   8176.0 free,     16.0 used.   5988.2 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                                                                                                                                                                
2229271 mysql     20   0   98.9g  86.8g  39456 S  14.9  39.4 623:34.91 mysqld                                                                                                                                                                                 
  45955 grafana+  20   0 4302196  74996  26664 S   2.6   0.0 194:44.43 grafana-agent                                                                                                                                                                          
  45353 root      20   0 3165840  48080  20172 S   0.0   0.0   1:06.33 snapd                                                                                                                                                                                  
    834 root      19  -1  117880  45432  43988 S   0.0   0.0   0:04.42 systemd-journal                                                                                                                                                                        
  45494 root      20   0  111680  36748  32476 S   0.3   0.0   0:05.86 sssd_nss                                                                                                                                                                               
  45490 root      20   0  142632  35488  22776 S   0.0   0.0   0:13.36 sssd_be                                                                                                                                                                                
  45495 root      20   0   86644  23020  19040 S   0.0   0.0   0:03.42 sssd_sudo    

ETC...

接下来看看我的免费-g报告:

# free -g
              total        used        free      shared  buff/cache   available
Mem:            220         212           4           0           3           5
Swap:             7           0           7

如果 MySQL 仅使用了 220 GB 中的 39.4%(86.68 GB),而缓存占用了 3 GB,那么其他 130GB 去哪儿了?如果我重新启动 MySQL 服务,系统总内存使用量将下降到大约 12 GB,然后慢慢上升。通常 MySQL 会报告使用 90% 的 RAM,但这次当我查看时,我看到了上面的报告。

相关内容