性能試験でネックになるのがcpu使用率というのはイメージしやすいと思う。私が先日行った性能試験では、CPU 使用率が上昇する前に、同時接続数がネックになってしまった。この反省から注意すべき点を残しておきたい。
構成は下図であった。

(1) apache http server 同時接続数
同時リクエスト受付の上限数が決められている。初期値はosやバージョンで異なるらしいが私の例では150だった。
(2) spring boot 同時接続数
デフォルトのtomcat をweb サーバとして使う場合、max thread の初期値が200である。apache より大きくしても意味はない。
(3) spring boot データベース接続プール数
デフォルトのHikari CP を使う場合、初期値は10。ディスクアクセスが多い場合はもっとあげても良さそうである。
(4) postgreSQL 同時接続数
もしPostgreSQLを自前でインストールした場合、初期値は100らしい。私の例ではaws rds を使っていたので1700だった。(インスタンスタイプ毎に異なる)spring boot の台数と (3)のプール数を掛け合わせた数が収まるように調整する必要がある。
以上4点が問題となった。
cpu負荷をかける前に、これらを確認したら良かった。具体的には、spring boot 上にスリープするだけのコントローラを作成して、そこに対して想定のリクエストを投げる事で確認できた。私の場合はcpu 負荷のかかる処理を最初から大量に投げたため切り分けで時間を要してしまった。