무엇이 내 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% 범위에서 멈췄습니다. 아파치를 시작했는데 CPU가 즉시 100%에 도달했습니다.

서버가 100%임에도 불구하고 워크벤치를 사용하여 mySQL과 통신할 수 있습니다(가져오기가 0.08초가 아닌 2초 만에 완료되지만). 그러나 Apache는 전혀 쓸모가 없으며 시간 초과됩니다. 도움을 주셔서 감사합니다.

업데이트 #1

1%cpu를 초과하는 7개의 대형 프로세스가 있습니다(총 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)가 있습니다.

<0.0%cpu(??% CPU total)와 같은 152개의 작은 프로세스가 있습니다.

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

134개의 작은 프로세스 <0.0%cpu(총 %cpu)가 있습니다.

나머지 프로세스의 총 개수가 91%이므로 152개와 134개의 작은 프로세스의 총 개수는 약 9%가 되어야 합니다.

업데이트 #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 제공업체는 현재 이 문제를 해결하기 위해 노력하고 있습니다. 업데이트하겠습니다.

관련 정보