我遇到了 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查看按常驻内存页面排序的进程。这可以提示哪些进程正在使用您的内存。