Webアプリのエラー調査で、実際にどのように画面を操作するとログに上がっていたそのエラーが再現するかというのはなるべく突き止めたいものです。
その中でも再現させるのが厄介なのが、ログから察するに、この画面を複数タブで開いて同時にリクエストすると起きそう、、、みたいなやつ。
自分の予想ではこの画面で複数ウィンドウで並べて、同時にサブミットしたら出るはずなんだけど再現しないなーってときに、以下の手法に辿り着きました。
手法としては、以下のコマンドを多重起動するだけ。
yes > /dev/null &
yes
コマンドは、標準出力に無限にyという文字を出力し続けます。
1つ起動した状態でTOPコマンドでCPU全体の使用率を見ると13%程度だったので、参考記事と同様に10個起動してみたらCPU使用率は90%を超えました。
その状態で先述の画面を2つのウィンドウで開いて同時にサブミットしたところ、ログに上がっていたのと同じエラーが再現しました。
高負荷状態を再現となると、以前はcurlを繰り返すシェルスクリプトを用意してみたり、負荷ツールを使うなど、アプリに対して実際にリクエストを送る方法しか以前は頭にありませんでした。
最近「Webパフォーマンスチューニング ISUCONから学ぶ高速化の実践」という本を読んで、Linuxでstressコマンドというのを使って高負荷状態を作ることができるというのを知ったので、そのおかげでこちらの方法に辿り着くことができました。
https://amzn.to/3i6IETS
今回はローカルのmacでの再現だったのと、CPUにさえ負荷をかけられれば良かったので手軽なこちらの方法を採用しました。
インフラのことはよくわからないながらも、業務に役立ちそうだなと思って手に取って良かったです。
コメント