この記事では、Linux インスタンスの帯域幅を設定し、CPU がいっぱいか高いかをトラブルシューティングする方法を紹介し、具体的な手順に焦点を当てています。この記事の内容はコンパクトなので、何かを得ることができれば幸いです。
Linux インスタンスの帯域幅と CPU がいっぱいまたは高い場合のトラブルシューティング
クラウド サーバー ECS を使用している場合、サービスが遅くなったり、ECS インスタンスが突然切断された場合は、サーバーの帯域幅と CPU を考慮することができます。フルまたはハイで実行することに何か問題がありますか?事前にアラーム タスクを作成しておくと、帯域幅と CPU がいっぱいまたは高いときにシステムが自動的にアラーム リマインダーを発行します。 Linux システムでは、次の手順に従ってトラブルシューティングを行うことができます。
問題を特定します。帯域幅とフルまたはハイレベルで実行されている CPU に影響を与える特定のプロセスを見つけます。
分析と処理。帯域幅と CPU に影響を与えるプロセスがフルまたはハイレベルで実行されているかどうかを確認し、処理対象に分類します。
通常のプロセスの場合: プログラムを最適化するか、サーバー構成をアップグレードする必要があります。
異常なプロセスの場合: プロセスを手動で確認して強制終了することも、サードパーティのセキュリティ ツールを使用してプロセスを確認して強制終了することもできます。
この記事の関連する構成と手順は、CentOS 6.5 64 ビット オペレーティング システムでテストされています。他の種類およびバージョンのオペレーティング システムでは構成が異なる場合があります。詳細については、対応するオペレーティング システムの公式ドキュメントを参照してください。
クラウド サーバー ECS Linux システムの CPU の稼働率が高い状態が続くと、システムの安定性や業務運営に影響を及ぼします。この記事では、CPU 使用率が高い問題のトラブルシューティングと分析について簡単に説明します。
CPU がフルまたはハイで動作している問題の場所
クラウド サーバー ECS の CPU がハイで動作し続けると、安定性とパフォーマンスに影響を与えます。システムの安定性が影響を受けます。 Linux システムでは、プロセスを表示するための一般的なコマンドは次のとおりです。
ps -aux ps -ef top
Linux システムでは、通常、top コマンドは、システム負荷の問題を表示し、より多くの CPU リソースを消費するプロセスを見つけるために使用されます。
#操作手順
#コンソール管理端末を介して ECS インスタンスに接続します。「リモート接続機能を使用して ECS インスタンスに接続する」を参照してください。 。 注: リソース負荷が異常な場合、通常は SSH によるリモート接続ができません。コンソール管理端末から接続することをお勧めします。 top コマンドを使用して、システムの現在の実行ステータスを表示します。top - 17:27:13 up 27 days, 3:13, 1 user, load average: 0.02, 0.03, 0.05 Tasks: 94 total, 1 running, 93 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.3 us, 0.1 sy, 0.0 ni, 99.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.1 st KiB Mem: 1016656 total, 946628 used, 70028 free, 169536 buffers KiB Swap: 0 total, 0 used, 0 free. 448644 cached Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 41412 3824 2308 S 0.0 0.4 0:19.01 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.04 kthreadd
CPU フルまたはハイの分析と処理
CPU フルまたはハイの実行、具体的な処理結果を確認した後、異常なプロセスについては、 kswapd0 プロセスによるメモリ不足などの問題については、システム仕様のアップグレードまたはプログラムの最適化が必要です。CPU を大量に消費するプロセスを直接終了するには、top を使用します。
top で、該当する異常プロセスを直接迅速に終了できます。実行中のインターフェイス。手順は次のとおりです。 プロセスを強制終了する場合は、小文字の k キーを押すだけです。 終了するプロセスの PID を入力します (出力結果の一番上の最初の列)。たとえば、PID 86 のプロセスを終了する場合は、86 と入力して Enter キーを押します。 操作が成功すると、「Send pid 86 signal [15/sigterm]」のようなプロンプト メッセージがインターフェイスに表示されます。 Enter キーを押して確定します。kswapd0 プロセスの占有により CPU の使用率が高くなる
オペレーティング システムはページング メカニズムを使用して物理メモリを管理し、システムはメモリの一部を仮想化します。ハードディスクの空き容量をメモリ使用量に反映します。メモリの速度はディスクの速度よりもはるかに速いため、システムは特定のページング メカニズムに従って、不要なページをディスクにスワップし、必要なページをメモリに転送する必要があります。 kswapd0 は、仮想メモリ管理におけるページングを担当するプロセスです。サーバーのメモリが不足している場合、kswapd0 はホストの CPU リソースを大量に消費します。操作手順は次のとおりです。 top コマンドを使用して kswapd0 プロセスを表示します。检查该进程是否持续处于非睡眠状态,且运行时间较长。若是,可以初步判定系统在持续地进行换页操作,kswapd0 进程占用了系统大量 CPU 资源。
您可以通过 free 、ps 等指令进一步查询系统及系统内进程的内存占用情况,做进一步排查分析。
针对系统当前内存不足的问题,您可以重启 Apache,释放内存。
说明:从长远的角度来看,您需要对内存进行升级。
带宽跑满或跑高的分析处理
对于正常进程导致的带宽跑满或跑高的问题,需要对服务器的带宽进行升级。对于异常进程,有可能是由于恶意程序问题,或者是部分 IP 恶意访问导致,也可能是服务遭到了 CC 攻击。
通常情况下,您可以使用 iftop 工具或 nethogs 查看流量的占用情况,进而定位到具体的进程。
使用 iftop 工具排查
在服务器内部安装 iftop 流量监控工具。
yum install iftop -y
服务器外网带宽被占满时,如果通过远程无法登陆,可通过阿里云终端管理进入到服务器内部,运行下面命令查看流量占用情况:
iftop -i eth1 -P
注意:-P 参数将会显示请求端口。执行 iftop -i eth0 -P 命令,可以查看通过服务器哪个端口建立的连接,以及内网流量。举例如下:
在上图中,您可以查看到流量高耗的是服务器上 53139 端口和 115.205.150.235 地址建立的连接。
执行 netstat 命令反查 53139 端口对应的进程。
netstat -tunlp |grep 53139
经反查,服务器上 vsftpd 服务产生大量流量,您可以通过停止服务或使用 iptables 服务来对指定地址进行处理,如屏蔽 IP 地址或限速,以保证服务器带宽能够正常使用。
使用 nethogs 进行排查
在服务器内部安装 nethogs 流量监控工具。
yum install nethogs -y
通过 nethogs 工具来查看网卡上进程级的流量信息,若未安装可以通过 yum、apt-get 等方式安装。举例如下:
若 eth1 网卡跑满,执行命令 nethogs eth1。
查看每个进程的网络带宽情况以及进程对应的 PID。
确定导致带宽跑满或跑高的具体进程。
若进程确定是恶意程序,可以通过执行 kill -TERM
说明: 如果是 Web 服务程序,您可以使用 iftop 等工具来查询具体 IP 来源,然后分析 Web 访问日志是否为正常流量。日志分析可以使用 logwatch 或 awstats 等工具进行。
使用 Web 应用防火墙防御 CC 攻击
若您的服务遭受了 CC 攻击,请在 Web 应用防火墙控制台尽快开启 CC 安全防护。
登录 Web应用防火墙 控制台。
在 CC 安全防护中,启动状态按钮,并在模式中选择 正常。
以上がLinux インスタンスの帯域幅を設定し、CPU がいっぱいまたは高い場合のトラブルシューティングを行う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。