のぴぴのメモ

自分用のLinuxとかの技術メモ

テストでプロセスをハングアップさせる方法

テストケースでプロセスハングがあり、どうやろうかと調べたので簡単にメモします。

プロセスの一時停止

対象のプロセスにSIGSTOPを送るとプロセスが一時停止します。これでプロセスのハングアップ状況を作ります。
※ アプリ側でSIGSTOPを受け付けないよう実装されている場合は効かないです。

sudo kill -s SIGSTOP <対象プロセスのPID>

プロセスの再開

再開する場合は対象のプロセスにSIGCONTを送ります。ただ正常に再開してくれるかは該当アプリの実装によります。
なのでサービスであればsystemctl restart XXXXXで再起動してしまったほうが確実です。

sudo kill -s SIGCONT <対象プロセスのPID>

なんで調べたのか

kubernetes(EKS+ワーカーノードEC2構成)の障害テストで、kubeletのハング時を再現したくて調べたものです。
ちなみにテスト結果は以下のとおりです。

  • EC2インスタンスは正常稼働のママ(インスタンスやOSは正常なので、AutoScalingでは当然検知できない)
  • kubernetesで該当ノードはNotReady状態になる
  • 該当ノード上のPodは検証ではTerminatingになり、最終的に別のノードに再配置され復旧する
  • アプリ(ALB経由の簡易的なhttpdのPod)は一時的にエラー(50x)が発生する場合も