Tutoriel Linux

Linuxの便利な機能:リソースを大量に消費するプロセスを急停止させることなく、落ち着かせる

Débutant2 min de lecture
À retenirLinux n'est pas réservé aux experts. Le bon point de départ : une distribution accessible, une sauvegarde propre et quelques commandes comprises.

LinuxプロセスがCPUを過剰に消費し始めた場合、最初の反応は必ずしも 殺すサービスが実際に動作している場合、それを突然シャットダウンすると、タスクが壊れたり、バックアップが破損したり、進行中のプロセスが中断されたりする可能性があります。この場合、 ニース そして レニス 停止させることなく優先度を下げることができます。

注:これらのコマンドは負荷を魔法のように軽減するものではありません。Linuxスケジューラが認識するCPU優先度を変更するものです。これはサーバーに余裕を持たせるのに役立ちますが、アプリケーションがループしたりデータベースをブロックしたりする場合は、ログを読んで原因を特定する必要があります。

Tuxは、サーバー上のリソースを大量に消費するLinuxプロセスの優先度を調整します。
niceコマンドとreniceコマンドを使うと、プロセスを突然停止させることなく、そのプロセスの優先度を下げることができます。

プロセスを変更する前に、その価値を理解する

Linux では値 ニース 一般的にはから始まります マイナス二十 もっている 十九値が低いほど、プロセスの優先度が高くなります。値が高いほど、他のタスクに割ける時間的余裕が生まれます。

  • マイナス二十 :非常に高い優先順位であり、管理された症例に限定される。
  • : 多くのプロセスのデフォルトの優先度。
  • または 十五 優先度は低いが、長時間を要する緊急性の低い作業に適している。
  • 十九 優先度は非常に低い。

一般的なユーザーは、自分のプロセスの優先度を下げることができます。プロセスの優先度を上げるには、root権限が必要です。これは意図的な仕様です。共有サーバーで優先度を高く設定しすぎると、システム全体に悪影響を及ぼす可能性があるためです。

優先度の低いコマンドを実行する

注文 ニース これはプログラムを起動する際に使用されます。簡単な例:

nice -n 10 コマンド

強い圧縮の場合、以下のような結果が生じる可能性があります。

nice -n 10 tar -czf backup.tar.gz /srv/data

このタスクは常に実行されていますが、他のプロセスを過度に占有することはありません。私は主に、圧縮、変換、スキャン、カスタムスクリプト、または1分以内に完了する必要のない長時間の処理など、バックグラウンド処理に使用しています。

cronスクリプトやSSHターミナルからコマンドを実行する場合でも、負荷状況を常に監視してください。優先度を低くしても、最低限の監視は怠ってはなりません。

ps、top、またはhtopを使用して現在の優先度を表示します。

変更を加える前に、関連するプロセスを特定してください。出力 追記 ターゲットを絞るだけで十分な場合が多い。

ps -eo pid,ni,pri,pcpu,pmem,comm --sort=-pcpu | head

コラム どちらでもない 値「nice」を表示します。 PRI カーネルによって計算された優先度を示します。ライブで素早く読むには、以下を開くこともできます。

トップ

または使用します htopでサーバー負荷を読み取るhtopでは、CPUでソートしてからPIDを確認することで、ユーザーが多くの誤った判断を下すのを既に防ぐことができます。

reniceで既に開始されたプロセスを変更する

プロセスが既に実行中の場合、 ニース ではもはや不十分です。 レニスまず、PIDを取得し、次に優先度を下げます。

レニス +10 -p 1234

ここ、 千二百三十四 実際の PID に置き換える必要があります。別のユーザーに属するプロセスの場合、または優先度を上げたい場合は、次の手順に従ってください。 須藤 :

sudo renice -5 -p 1234

明確な理由がない限り、負の値を設定することはお勧めしません。本番サーバーでは、これは最善の対応策となることはほとんどありません。リソースを大量に消費するプロセスの優先度を下げる方が、診断が不十分なサービスに過剰なCPUアクセスを与えるよりも、多くの場合、健全な状態を保つことができます。

変更が適用されたことを確認してください。

レニス値を再読み込みします どちらでもない :

ps -o pid、ni、pri、pcpu、pmem、comm -p 1234

全体の負荷も確認できます。

稼働時間

サーバーが遅いままなら、すぐに結論を出さないでください レニス が機能していません。ボトルネックは、ディスク、メモリ、アプリケーションロック、またはループで再起動しているサービスである可能性があります。この場合、ログを確認してください。 ジャーナルctl およびアプリケーションログ しっぽ

親切だけでは不十分な場合

ニース そして レニス これらの対策はCPUの優先度に影響を与えるものであり、メモリ使用量を制限したり、不安定なSQLクエリを修正したり、実際のリソース制限を代替したりするものではありません。サービスを適切に制限する必要がある場合は、systemd、cgroups、またはアプリケーションの設定を検討してください。

プロセスが明らかにブロックされているか危険な状態にある場合は、停止する必要があるかもしれません。その場合は、適切な方法を使用してください。まずサービスを特定し、ログを確認し、通常のシャットダウンを試み、それでも解決しない場合は、適切な方法を使用してください。 悪いプロセスを停止せずに殺す

のマニュアルページ ニースレニス そして 追記 利用可能なオプションの詳細が記載されています。実際には、何よりもまず次のルールを覚えておいてください。長時間実行されるタスクがサーバーの負荷を増大させている場合は、そのタスクの優先度を下げるべきですが、実際の負荷問題を隠蔽するために優先度を下げるべきではありません。

sudo apt update && sudo apt upgrade