stressapptest
とは、Linuxにてメモリに負荷を意図的にかけて、メモリ負荷テストを実施したりするために使用するツールです。
今回、諸事情あり、以下の条件下で stressapptest
をインストールする必要がありました。
- AWS上に起動したEC2インスタンス(AmazonLinux2)に
stressapptest
をインストールしたい - 対象のEC2インスタンスはインターネットに接続できない環境
- ただし、踏み台サーバー経由にてSSHでの接続は可能
そこで、ローカルから stressapptest
パッケージをEC2インスタンスにアップロードし、EC2インスタンスにてパッケージを展開してからインストールすることにしました。
以下に、その備忘録を残します。
大まかな流れ
大まかな流れは以下の感じです。
- インターネットができる環境に、作業用EC2インスタンスを起動する
- インターネットができる環境の作業用EC2インスタンスで、
stressapptest
のパッケージを作成する- パッケージ自体はダウンロードできないので、githubからソースをプル→ビルド→パッケージ化する
- 作成したパッケージをローカルPCにダウンロードする
- 作成したパッケージをローカルPCから踏み台サーバーにアップロードする
- 踏み台サーバーからインストール対象のEC2インスタンスにSCPでアップロードする
- インストール対象のEC2インスタンスでパッケージから
stressapptest
をインストールする
注意!!作業用のEC2インスタンスは、インストール対象のEC2インスタンスと同じインスタンスタイプ・OS環境下で実行しないと、stressapptest が動作しない場合があります
詳細手順
1. インターネットができる環境のEC2インスタンスを起動する
パブリックサブネットに AmazonLinux のEC2インスタンスを起動します。
(単純に起動させるだけなので詳細な説明は省略)
2. インターネットができる環境の作業用EC2インスタンスで、stressapptest のパッケージを作成する
以下、作業用EC2インスタンスにSSHで接続して実行します。
ビルド環境の準備
- パッケージリストを最新に更新
sudo yum update -y
- 必要なビルドツールをインストールする
sudo yum install -y git gcc make automake autoconf gcc-c++
- github から
stressapptest
のリポジトリをダウンロードする
git clone https://github.com/stressapptest/stressapptest.git
- ビルドする
cd stressapptest
./configure
make
- ビルドしたバイナリをtar.gz形式にパッケージングする
tar cvzf stress-package.tar.gz -C src ./stressapptest
以上で、/stressapptest
ディレクトリに stress-package.tar.gz
が出力されます。
3. 作成したパッケージをローカルPCにダウンロードする
ローカルPCにて、以下のコマンドを実行してEC2インスタンスから stress-package.tar.gz をダウンロードします。
scp -i {作業用EC2インスタンスの秘密鍵のパス} ec2-user@{EC2インスタンスのIPアドレス}:/home/ec2-user/stressapptest/stress-package.tar.gz .
4. 作成したパッケージをローカルPCから踏み台サーバーにアップロードする
以下のコマンドを実行して、ローカルPCから踏み台サーバーに stress-package.tar.gz をアップロードします。
scp -i {踏み台サーバーの秘密鍵のパス} stress-package.tar.gz ec2-user@{EC2インスタンスのIPアドレス}:/home/ec2-user/
5. 踏み台サーバーからインストール対象のEC2インスタンスにSCPでアップロードする
踏み台サーバー上で、以下のコマンドを実行して、インストール対象のEC2インスタンスに stress-package.tar.gz をアップロードします。
(ここでは説明のために踏み台サーバーで秘密鍵を保持している書き方にしていますが、セキュリティ的には本当は良くないです)
scp -i {インストール対象のEC2インスタンスの秘密鍵のパス} stress-package.tar.gz ec2-user@{EC2インスタンスのIPアドレス}:/home/ec2-user/
6. インストール対象のEC2インスタンスでパッケージから stressapptest をインストールする
インストール対象のEC2インスタンスにSSHで接続し、 /home/ec2-user/
ディレクトリにいることとします。
- アップロードしたアーカイブを解凍する
tar xvzf stress-package.tar.gz
- 解凍した stressapptest バイナリを /usr/local/bin などのパスが通っているディレクトリに移動する
sudo mv ./stressapptest /usr/local/bin/
- 実行権限を確認する
sudo chmod +x /usr/local/bin/stressapptest
以上でインストール完了です。お疲れ様でした。
stressapptest を使用してメモリ負荷をかける方法
詳細は https://github.com/stressapptest/stressapptest#readme に記載されていますが、ここでは例を取り上げます。
以下のコマンドで「20秒間、256MBのメモリ負荷をかける」が実行可能
stressapptest -s 20 -M 256
コメント