【Linux】stressコマンド(負荷テスト・パフォーマンスに最適のコマンド)

サーバーを構築後にパフォーマンステスト・負荷テストを行ないます。

その理由は、

  • どの程度のパフォーマンスを出せるのか?
  • どれくらいの負荷を掛けてもサービスを提供できるのか?

をたとえ正確でなくても(正確なパフォーマンスを測定するのは結構難易度が高いです)、目安となる値が取得できれば問題ないと思います。

(エンタープライズで数万人レベルの従業員がいるような環境の場合は正確な数値を求められるかもしれませんが)

 

以前、VMware vSphere のパフォーマンステストについて考察しました。

 

【VMware】VMware vSphere のパフォーマンステストの方法について

 

 

どうすれば簡単にある程度正確なテストができるのか?

  • パフォーマンス・テスト
  • 負荷テスト
  • ロード・テスト
  • ピークロード・テスト
  • ストレス・テスト

 

正直言って定義があいまいなので、組織ごとに異なると考えた方が良いでしょう。

そのため、自分が所属する組織の定義について確認しておく必要があります。

たとえば、「ストレス・テスト」を「負荷テスト」と呼んでいるとか。

 

ここでは単純に負荷を掛けても

  • システムが落ちない
  • ハングしない
  • sshのセッションが切れない
  • コマンドが実行できる

などを調査するパフォーマンステストについて考えます。

 

stressコマンドで簡単に負荷を掛けてパフォーマンスを確認できる

Linuxサーバーなら「yum」コマンドで「stress」コマンドをインストールできます。

 

 

stressコマンドインストール手順

■テスト環境

OS : CentOS7

CPU : 4コア

メモリ : 4GB

[root@test07 ~]# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
[root@test07 ~]# cat /proc/cpuinfo | grep processor
processor       : 0
processor       : 1
processor       : 2
processor       : 3
[root@test07 ~]# cat /proc/meminfo | grep MemTotal
MemTotal:        3882036 kB
[root@test07 ~]#

 

 

yum で簡単にインストールすることができます。

[root@cent07 ~]# yum install stress

 

 

stress コマンドの簡単な解説

stress --help コマンドで簡単な使い方が分かります。

[root@cent07 ~]# stress --help
`stress' imposes certain types of compute stress on your system

Usage: stress [OPTION [ARG]] ...
 -?, --help         show this help statement
     --version      show version statement
 -v, --verbose      be verbose
 -q, --quiet        be quiet
 -n, --dry-run      show what would have been done
 -t, --timeout N    timeout after N seconds
     --backoff N    wait factor of N microseconds before work starts
 -c, --cpu N        spawn N workers spinning on sqrt()
 -i, --io N         spawn N workers spinning on sync() 
 -m, --vm N         spawn N workers spinning on malloc()/free()
     --vm-bytes B   malloc B bytes per vm worker (default is 256MB)
     --vm-stride B  touch a byte every B bytes (default is 4096)
     --vm-hang N    sleep N secs before free (default none, 0 is inf)
     --vm-keep      redirty memory instead of freeing and reallocating
 -d, --hdd N        spawn N workers spinning on write()/unlink()
     --hdd-bytes B  write B bytes per hdd worker (default is 1GB)

Example: stress --cpu 8 --io 4 --vm 2 --vm-bytes 128M --timeout 10s

Note: Numbers may be suffixed with s,m,h,d,y (time) or B,K,M,G (size).
[root@cent07 ~]#

 

 

stressコマンドの例

以下、stress コマンドの例です。

 

CPU負荷を掛けたい

CPU3コアに対して3分間負荷を掛けます。

[root@test07 ~]# stress --cpu 4 --timeout 3m

 

この状態でサーバーにログインして top コマンドを実行します。

下図のようにstressプロセスが4つ稼働し、それぞれがCPU100%消費しています。

 

この状態で

  • sshログインができるか?
  • pingは欠けないか?
  • httpdサービスは止まらないか?
  • 圧縮ファイルを解凍できるか?

などをテストします。

 

これくらいシンプルなテストで問題ないと思います。

→むしろ難しく考えすぎて結局何もしない方が後々困ります。

 

 

メモリ負荷を掛けたい

4プロセスが起動し、それぞれが1GBのメモリを3分間消費します。

つまり、合計で4GBのメモリを3分間消費することになります。

[root@test07 ~]# stress --vm 4 --vm-bytes 1G --timeout 3m

 

 

 

ディスクに負荷を掛けたい

1プロセスがディスクに対して1GBの書き込みを2分間行なって負荷を掛けます。

[root@test07 log]# stress --hdd 1 --timeout 2m

 

2プロセスがディスクに対して2GBの書き込みを2分間行って負荷を掛けます。

[root@test07 log]# stress --hdd 2 --hdd-bytes 2G  --timeout 2m

 

 

 

まとめ

stressコマンドは非常に役に立つと思います。

私としては費用の高い高性能のツールよりもコストパフォーマンスが高いと思います。

 

 

Posted by 100%レンタルサーバーを使いこなすサイト管理人

“【Linux】stressコマンド(負荷テスト・パフォーマンスに最適のコマンド)” への1件のコメント

  1. 名無しさん より:

    CentOS7の場合は、標準で以下のコマンドで epel レポジトリをインストール可能です。

    # yum install epel-release

コメントを残す

メールアドレスが公開されることはありません。