IT系フリーランスの日記

大まかにIT系と呼ばれる仕事を自営業として営んでいる者の日記です

Djangoで作ったライセンス認証サーバーの負荷試験をしてみた。

先日DjangoのRestFrameworkを活用して作成した、ライセンス認証サーバーがどれくらいの負荷に耐えられるのか自分の中で自信がなかったため、
負荷試験を行う方法を探していたのですが、どれも設定が難解だったり、GETリクエストの負荷試験の方法は分かっても、
POSTリクエストを使用した負荷試験の方法は分からなかったりあまり使い勝手がいいものが見つからない中、これであればというものが見つかりました。
app.loadimpact.com

あらかじめ想定されるアクセスの内容を記述しておき、必要であれば待機時間を設けて複数の内容で負荷試験を行うものです。
今回は、前回作成したEAのライセンス認証サーバーを想定して、複数のアカウントを異なるVU(仮想ユーザーと呼ぶようです)からアクセスした状態を再現して、
返って来るレスポンスの内容が、予め指定されたものと同一かどうかで成功・失敗を判定します。
以下のスクリーンショットのテスト内容では、5VUs(5人の仮想ユーザー)で60秒間テストし、10VUsに増やして60秒間、20VUsに増やして60秒間、30VUsに増やして60秒間、
f:id:tyusuke88:20191109134014p:plain
後は、同じように、30VUs→20Vus→10VUsと60秒ごとに負荷を減らしていき、結果を見るというものです。

ライセンス認証サーバーにはAWSのt2.microインスタンスを使用しているため、そもそも30VUsには同時には耐えられないと思いますが、一応実行してみます。
f:id:tyusuke88:20191109135649p:plain
結果のグラフを見ると、設定ファイルで設定したよりは細かいステップでVUs(仮想ユーザー)を増やしているようです。
そして、仮想ユーザーがピークの30VUsに達した後に、サーバーからのレスポンスがステータス500を返すようになり、最後までそのままで終了しました。

仮想ユーザーが減少しても、サーバーエラーが戻らないのには、ロジック上の改善点がまだあるのかも知れませんが、t2.microでは、
同時に30人のユーザからアクセスがあった場合には、応答しきれずサーバーがダウンしてしまう様子が確認出来ました。