私は難しい状況に直面しています。 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と通信できます(インポートは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%に低下しました。 1日の朝にゲストが100倍に増えていないようです!私のVPSプロバイダは現在、この問題を解決するよう努めています。更新します。