PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
19857 mysql 20 0 514m 47m 3404 S 386 9.7 4511:45 mysqld
15659 www-data 20 0 205m 11m 4856 S 7 2.3 0:00.67 apache2
15701 www-data 20 0 205m 11m 4424 S 5 2.2 0:00.19 apache2
15700 www-data 20 0 0 0 0 Z 1 0.0 0:00.02 apache2 <defunct>
Run Code Online (Sandbox Code Playgroud)
这些是我top在 Ubuntu 上的结果。很好奇为什么我的网站今天一直在下降。会是这样吗?
为什么 MySQL 使用 386% 的 CPU?这是正常的吗?我能做些什么来修复它?
我正在运行,我看到在 502968 KB 中,使用了 48064 KB,剩下 16884 KB 空闲。但是当我查看各个进程时,我发现 mysql 有时会消耗我 9.4% 的 RAM - 但似乎没有其他任何东西消耗任何东西。什么消耗了我所有的内存?
这是顶部的屏幕截图:
top - 20:46:07 up 1 min, 1 user, load average: 0.18, 0.05, 0.02
Tasks: 81 total, 1 running, 80 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.4 sy, 0.0 ni, 99.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 502968 total, 241236 used, 261732 free, 10488 buffers
KiB Swap: 524284 total, 0 used, 524284 free, 106756 cached
PID USER …Run Code Online (Sandbox Code Playgroud) Top 没有准确显示我的内存使用情况,还是我的 VPS 提供商做了一些奇怪的事情?正如您在下图中看到的,它使用了 90% 以上的内存,但是当您查看实际使用内存的进程时,它甚至没有超过 30%。我知道当进程具有共享内存时,top 无法正确显示,但例如,使用共享内存的 httpd 进程几乎不占用所有可用内存的任何百分比,即使汇总后也是如此。
图中top命令是按照内存使用情况排序的,所以没有大进程隐藏。
https://i.stack.imgur.com/4h2aW.png (显然我没有足够的声誉来发布图片是问题。)
将顶部输出更新为文本:
Tasks: 49 total, 1 running, 48 sleeping, 0 stopped, 0 zombie
Cpu(s): 17.7%us, 1.1%sy, 0.0%ni, 81.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.3%st
Mem: 2097152k total, 1858988k used, 238164k free, 0k buffers
Swap: 2097152k total, 140740k used, 1956412k free, 1089504k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
812 mysql 20 0 513m 241m 5104 S 4.7 11.8 108:32.39 mysqld
882 root 20 0 …Run Code Online (Sandbox Code Playgroud) 在 CentOS5 上,我看到“top”命令显示在 20% 和 2% 空闲之间悬停,但随后负载显示为 1.20。这怎么可能?当我输入“正常运行时间”时,我也会看到 3 个负载数字,通常在 1.20 - 1.35 左右。