我的 digitalocean droplet 中的 CPU 使用率高

Ibr*_*mar 1 cpu-usage ubuntu-12.04

我在这里遇到高 CPU 使用率,这是我从服务器获得的统计数据,15 分钟内每次重启后的消耗量高达 100%,会出现什么问题?

我在没有太多流量的服务器上安装了一个 wordpress 副本,这是我在服务器中使用 top 命令获得的统计信息。

top - 11:46:02 up 12 min,  3 users,  load average: 40.89, 16.03, 6.11
Tasks: 132 total,  41 running,  91 sleeping,   0 stopped,   0 zombie
Cpu(s): 24.3%us, 61.5%sy,  0.0%ni,  0.0%id,  4.0%wa,  0.0%hi,  0.0%si, 10.2%st
Mem:   2050896k total,  1988656k used,    62240k free,      284k buffers
Swap:        0k total,        0k used,        0k free,     4712k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
   31 root      20   0     0    0    0 R   39  0.0   1:35.53 kswapd0
  899 root      20   0 15988  172    0 S   14  0.0   0:05.00 irqbalance
  418 syslog    20   0  243m  600    0 S   13  0.0   0:06.85 rsyslogd
  944 mysql     20   0 1320m  53m    0 S   12  2.7   0:21.15 mysqld
 2357 root      20   0 17344  532  164 R   11  0.0   0:14.27 top
  960 root      20   0  246m 3816    0 S    3  0.2   0:08.18 php5-fpm
 2431 www-data  20   0  344m  64m  908 R    2  3.2   0:04.23 apache2
 2435 www-data  20   0  304m  63m  836 R    2  3.2   0:03.43 apache2
 2413 www-data  20   0  349m  63m  920 R    2  3.2   0:07.51 apache2
 2465 www-data  20   0  349m  64m  944 R    2  3.2   0:05.04 apache2
 2518 www-data  20   0  307m  41m 1204 R    2  2.1   0:01.37 apache2
 2406 www-data  20   0  346m  56m 1144 R    2  2.8   0:03.76 apache2
 2456 www-data  20   0  345m  55m 1184 R    2  2.8   0:02.67 apache2
 2373 www-data  20   0  351m  63m  784 R    2  3.2   0:11.09 apache2
 2439 www-data  20   0  306m  35m  916 R    2  1.8   0:02.51 apache2
 2450 www-data  20   0  345m  55m 1088 R    2  2.8   0:02.96 apache2
 2486 www-data  20   0  299m  10m  876 R    2  0.5   0:01.19 apache2
 2523 www-data  20   0  300m  27m  796 R    2  1.4   0:00.99 apache2
Run Code Online (Sandbox Code Playgroud)

kas*_*erd 5

top输出中,很明显您需要更多 RAM 或更多交换空间来运行您正在运行的工作负载。

我得出这个结论的方式来自以下几点:

  • 免费交换量正好是0k
  • CPU使用kswapd率高
  • 可用内存、缓冲区和缓存的数量都相当低。

当这些条件存在时,我总是看到通过添加交换文件或交换分区来提高性能。只需几个简单的步骤即可创建交换文件。例如,您可以使用这些命令:

mkdir -m 700 /var/local/swapfiles
head -c100M /dev/zero > /var/local/swapfiles/1
mkswap /var/local/swapfiles/1
swapon /var/local/swapfiles/1
Run Code Online (Sandbox Code Playgroud)

之后您可以创建另一个更大的交换文件。在运行时初始化一个大交换文件kswapd可能会非常慢。

在大多数系统上进行一些交换是个好主意,而您目前没有。如果您设法填满 GB 或更多的交换空间,那么您可能需要减少内存消耗或添加更多 RAM。

top您可以按shiftM查看按常驻内存页排序的进程。这可以暗示什么正在使用你的记忆。