我一台1核1G内存的VPS,最近总是出现CPU满载的情况,重启后恢复正常,过几个小时后又会满载,导致在上面运行的一些自动任务执行失败。
使用top
命令查看,发现是kswaod0
进程占用了大量CPU资源。这个进程是和虚拟内存相关的,在网上查到的资料:
kswapd0占用过高是因为物理内存不足,使用swap分区与内存换页操作交换数据,导致CPU占用过高。 解决办法: 01、禁止swap 02、扩大内存
但是我这台机器根本没有开启swap,所以我怀疑应该是物理内存不够,系统想调用swap内存而调用不到。我尝试开启swap虚拟内存:
代码语言:javascript复制[root@do-sp ~]# dd if=/dev/zero of=/home/swap bs=1MB count=1024
1024 0 records in
1024 0 records out
1024000000 bytes (1.0 GB) copied, 4.40974 s, 232 MB/s
[root@do-sp ~]# mkswap /home/swap
Setting up swapspace version 1, size = 999996 KiB
no label, UUID=c1c88cea-1832-4fef-ae18-3eee2d7314dd
[root@do-sp ~]# chmod 600 /home/swap
[root@do-sp ~]# swapon /home/swap
然后运行top
,看到负载马上就降低了。
看来kswapd0
负载过高,还有一种可能性是因为没有开启swap虚拟内存,而物理内存不够使用。所以小内存的VPS还是尽量开启swap内存吧。