是什么消耗了我的 CPU?

是什么消耗了我的 CPU?

我面临着一个困难的处境。 100% CPU,但我看不到在 top 或 htop 中使用太多的单个进程。

我运行这个命令:

:~$ ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10
%CPU   PID USER     COMMAND
 5.1    34 root     [kswapd0]
 2.4     1 root     /sbin/init
 2.3  1815 mysql    /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid
 0.6 25583 super    top
 0.5 12964 mysite /usr/bin/php-cgi7.2
 0.4 13313 mysite /usr/bin/php-cgi7.2
 0.4 13311 mysite /usr/bin/php-cgi7.2
 0.4 13310 mysite /usr/bin/php-cgi7.2
 0.4 13309 mysite /usr/bin/php-cgi7.2

这并不能解释为什么 top 和 htop 显示 100% CPU。

top - 22:17:15 up  3:14,  2 users,  load average: 104.14, 102.73, 87.49
Tasks: 392 total, 103 running, 251 sleeping,   1 stopped,   0 zombie
%Cpu(s): 25.7 us, 72.7 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  1.6 si,  0.0 st
KiB Mem :  2040972 total,    77924 free,  1666072 used,   296976 buff/cache
KiB Swap:  3906244 total,  1093324 free,  2812920 used.   187268 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
   34 root      20   0       0      0      0 S 17.7  0.0  11:06.77 kswapd0
 1815 mysql     20   0 1395428  24804    600 S  7.2  1.2   4:11.76 mysqld
    1 root      20   0  225472   4396   2768 S  4.6  0.2   4:50.26 systemd
31359 root      20   0  189660  68472   2124 R  2.0  3.4   0:02.34 /usr/share/webm
12975 mysite  20   0  522728  16780   2500 R  1.0  0.8   0:08.91 php-cgi7.2
13278 mysite  20   0  522728  17000   5372 R  1.0  0.8   0:08.27 php-cgi7.2
13311 mysite  20   0  522728  16468   3092 R  1.0  0.8   0:08.07 php-cgi7.2
28715 super     20   0   32716   2112   1108 S  1.0  0.1   0:04.79 htop
    7 root      20   0       0      0      0 R  0.7  0.0   0:23.60 ksoftirqd/0
12964 mysite  20   0  522728  17032   2504 R  0.7  0.8   0:09.36 php-cgi7.2
13008 mysite  20   0  522728  15728   2752 R  0.7  0.8   0:08.70 php-cgi7.2
13031 mysite  20   0  522728  18820   5808 R  0.7  0.9   0:08.72 php-cgi7.2
13039 mysite  20   0  522728  15856   2412 R  0.7  0.8   0:08.75 php-cgi7.2
13053 www-data  20   0  199312   6332   4336 R  0.7  0.3   0:00.46 apache2
13085 mysite  20   0  522728  16700   2440 R  0.7  0.8   0:08.60 php-cgi7.2
13094 www-data  20   0  199312   6896   4608 R  0.7  0.3   0:00.49 apache2
13125 mysite  20   0  522728  11152   2764 R  0.7  0.5   0:08.54 php-cgi7.2
13134 mysite  20   0  522728  19504   2780 R  0.7  1.0   0:08.58 php-cgi7.2
13161 mysite  20   0  522728  15324   2728 R  0.7  0.8   0:08.55 php-cgi7.2
13164 mysite  20   0  522728  15444   2480 R  0.7  0.8   0:08.54 php-cgi7.2
13174 mysite  20   0  522728  11712   2816 R  0.7  0.6   0:08.65 php-cgi7.2
13178 mysite  20   0  522728  12808   2768 R  0.7  0.6   0:08.57 php-cgi7.2
13185 mysite  20   0  522728  16080   2388 R  0.7  0.8   0:08.51 php-cgi7.2
13208 mysite  20   0  522728  13268   2424 R  0.7  0.7   0:08.38 php-cgi7.2
13210 mysite  20   0  522728  12744   2824 R  0.7  0.6   0:08.42 php-cgi7.2
13229 mysite  20   0  522728  15552   2704 R  0.7  0.8   0:08.46 php-cgi7.2
13230 mysite  20   0  522728  14944   2484 R  0.7  0.7   0:08.43 php-cgi7.2
13235 mysite  20   0  522728  15592   2468 R  0.7  0.8   0:08.42 php-cgi7.2
13236 mysite  20   0  522728  13832   2724 R  0.7  0.7   0:08.34 php-cgi7.2
13267 mysite  20   0  522728  16212   2488 R  0.7  0.8   0:08.36 php-cgi7.2
13275 mysite  20   0  522728  16228   3036 R  0.7  0.8   0:08.28 php-cgi7.2
13280 mysite  20   0  522728  15872   3140 R  0.7  0.8   0:08.23 php-cgi7.2
13284 mysite  20   0  522728  17144   5536 R  0.7  0.8   0:08.14 php-cgi7.2
13287 mysite  20   0  522728  15416   6132 R  0.7  0.8   0:08.31 php-cgi7.2
13288 mysite  20   0  522728  16024   3088 R  0.7  0.8   0:08.17 php-cgi7.2
13289 mysite  20   0  522728  14048   6344 R  0.7  0.7   0:08.23 php-cgi7.2
13291 mysite  20   0  522728  16468   2828 R  0.7  0.8   0:08.09 php-cgi7.2
13294 mysite  20   0  522728  15120   6196 R  0.7  0.7   0:08.16 php-cgi7.2
13296 mysite  20   0  522728  11564   3236 R  0.7  0.6   0:08.10 php-cgi7.2
13300 mysite  20   0  522728  17032   3104 R  0.7  0.8   0:08.15 php-cgi7.2
13303 mysite  20   0  522728  15636   3108 R  0.7  0.8   0:08.19 php-cgi7.2
13306 mysite  20   0  522728  17340   5720 R  0.7  0.8   0:08.12 php-cgi7.2

我尝试了这个:我停止了 mySQL,CPU 下降到 20%~30% 范围(主要是 htop 中的 apache 进程)。我停止了 apache,CPU 下降到 0%~2% 范围。我启动了 mySQL,CPU 停留在 0%~2% 的范围内。我启动了 apache,CPU 立即达到 100%。

即使服务器处于 100% 状态,我也可以使用工作台与 mySQL 进行通信(尽管提取在 2 秒内完成,而不是 0.08 秒)。然而Apache完全没用,而且超时了。谢谢你的帮助。

更新#1

我有 7 个大型进程 >1%cpu(总共 49.4%cpu):

303 mysql   15.00%  /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid
            
34  root    10.40%  [kswapd0]
12926   root    10.10%  [/usr/share/webm] <defunct>
13082   root    5.80%   /usr/share/webmin/authentic-theme/stats.cgi
10154   root    2.90%   /usr/share/webmin/virtual-server/collectinfo.pl
1   root    2.50%   /sbin/init
32750   super   1.10%   htop

我有 100 个进程,例如(CPU 总量的 40%):

mysite 0.40%    /usr/bin/php-cgi7.2

我有 6 个小进程 <1%cpu(总共 1.6%cpu):

我有 152 个小进程,例如 <0.0%cpu(??% cpu 总计):

www-data    0.0%    /usr/sbin/apache2 -k start

我有 134 个小进程 <0.0%cpu(??%cpu 总计)

152 和 134 个小进程的总数必须约为 9%,因为其余进程的总数为 91%。

更新#2 为什么我有 152 个 apache 进程在运行?这是我的 apache mpm_prefork.conf 文件。我想我达到了 MaxRequestWorkers 限制?

<IfModule mpm_prefork_module>
    StartServers             5
    MinSpareServers       5
    MaxSpareServers      10
    MaxRequestWorkers     150
    MaxConnectionsPerChild   0
</IfModule>

我的服务器是否受到攻击或者这是正常现象吗?在删除所有内容并从头开始安装之前,有什么想法可以解决这个问题吗?

更新#3

我认为这是一次 DoS 攻击。我在 VPS 控制面板(VPS 本身之外)中创建了防火墙,并仅允许来自我的私有 IP 的传入流量。 CPU 下降至 0.7%。我不认为我的顾客一天之内就增加了100倍!在我们发言时,我的 VPS 提供商正在研究这个问题。我会更新。

相关内容