我的 digitalocean droplet 中的 CPU 使用率过高

我的 digitalocean droplet 中的 CPU 使用率过高

我遇到了 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

答案1

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

kswapd之后您可以创建另一个更大的交换文件。当出现故障时初始化大型交换文件可能会非常慢。

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

top可以按shiftM查看按常驻内存页面排序的进程。这可以提示哪些进程正在使用您的内存。

相关内容