3. 性能・諸元

3.1. サイジング: サーバ台数はどのように見積もればよいでしょうか。

「サイジングガイドライン」を別途提供しています。 入手方法についてはお問い合わせください。

3.2. 諸元値を超えた運用をしたいのですが可能でしょうか?

可能です。

モバイルバックエンド基盤の諸元値は、開発元でテストを行い 動作を確認した際の設定値になります。したがって、実際の 性能や制限値に比べると控えめな数値となっています。 また、ここに記載されている数値で上限値を設定しているわけではありません。

実際の上限値は、ほぼ MongoDB 側の上限値になります。 これらの値については、 MongoDB Limits and Thresholds を参照ください。

3.3. 各種上限値・制限値や使用できる文字種などを教えてください

デベロッパーマニュアル の「制限値・スレショルド・文字制約」を参照ください。

3.4. JMeterによる性能テストで Non HTTP response code 系の例外が多発します

Non HTTP response code 系の例外は高負荷テスト時によく発生する現象です。 主な原因は JMeterとその実行環境の設定不備によるものが多いです。

例えば、下記のような例外があります。

  • Non HTTP response code: java.net.NoRouteToHostException, Non HTTP response message: No route to host
    • JMeterが利用しているポートが実行環境のポート数上限に達したため、新しいポートをアサインできないときに発生する
  • Non HTTP response code: java.net.ConnectException, Non HTTP response message: Connection timed out
    • APサーバの処理が追いつかず、JMeter の HTTP Request タイムアウトとなったときに発生する
  • Non HTTP response code: java.net.SocketException, Non HTTP response message: Connection reset
    • APサーバの処理が追いつかず、TCPの接続をOSが拒否したときに発生する
    • 通信経路上のネットワーク機器(ルータ、ファイアウォールなど)起因で発生することもある

前述の例外を低減するため、以下の点の調整が必要です。

  • JMeterの実行環境
    • OSのプロセス上限設定(ulimit)
    • NoRouteToHostException が多発する場合、複数台環境に分散して実行
    • GUIモードではなく、CUIモードで実行
  • JMeterの設定
    • Java ヒープメモリサイズの設定
    • request タイムアウト値を必要に応じて大きめに設定
    • ramp-up期間(秒)の調整。特に高多重度のテスト時、サーバは request を受けつける多数スレッドの起動に時間がかかるため、大きめに設定した方がよい
  • APサーバ(Tomcat)側の設定
    • 最大コネクション数の設定