最大メモリサイズの計算方法

概要

x-Servlet を稼働させるのに必要な Java ヒープメモリの最大サイズは、以下のようなデータからおおよその試算をすることができます。

  1. Webサーバが配信するHTML,GIF画像,JPEG画像の1時間あたりの流量とHTMLの配信数
  2. x-Servletが受け入れるユーザ数(sessionMaxCount)

一般的にこれらの数値が増えるほど、多くのメモリを必要とします。
また、アクセスの変動が大きいサイトの場合は、ピーク時の数値を想定する必要があります。

もしそれぞれの数値が想定からずれていた場合、以下の恐れがありますので注意してください。

  • 1.が想定以上となった場合、ヒープサイズの不足による Full GC の頻発が起こり、レスポンスとスループットが低下する
  • 2.が小さい場合、ユーザのセッション切れ頻発などサービスレベルが低下する
  • 2.が大きすぎる場合、"OutOfMemoryError"が発生し x-Servlet の処理が停止する

余裕を持ったメモリの準備、運用時のメモリ利用状況の確認、x-Servletの統計ログ(stats.log)を監視するなどの対策が必要です。

(試算結果はあくまで傾向を示す予想値であり、実際の数値と異なることがあります。このことをご理解の上、ご利用くださいますようお願いいたします)

試算式

下記の前提事項における試算式を示します。

ヒープメモリの最大サイズ[MB]

外部CSSを使用しない場合

H ÷ R × X1 × 29 + 100 + ( H × 10 + G × 87.5 + J × 2.45 ) ÷ ( 7 × GCの2乗根 )


外部CSSを使用する場合

H ÷ R × X1 × 46 + 100 + ( H × 10 + G × 87.5 + J × 2.45 ) ÷ ( 7 × GCの2乗根 )

  • (H) HTML流量[MB]:1時間あたりにWebサーバから配信されるHTMLファイルの総容量
  • (G) GIF流量[MB]:1時間あたりにWebサーバから配信されるGIFファイルの総容量
  • (J) JPEG流量[MB]:1時間あたりにWebサーバから配信されるJPEGファイルの総容量
  • (R) HTMLリクエスト数:1時間あたりにWebサーバから配信するHTMLの数
  • (X1) sessionMaxCount:保持するユーザ数の上限。x-Servletの設定値。
  • (GC) 1時間内に許容できるFull GC回数

※前提事項

  • x-Servletの初期設定を使用する
  • すべてのHTMLが動的に生成される
  • ページ分割は発生しないものとする
  • キャッシュしたファイルのサイズや保持数によるヒープメモリ上昇は考慮しない

実際の計算は「x-Servletユーザ専用ページ」にある、「x-Servlet メモリサイズ試算シート」をご利用中のバージョンに合わせてダウンロードしてください。

試算結果

下記の前提事項において試算式を適用したヒープメモリの最大サイズをグラフで示します。

※前提事項

  • x-Servletの設定はデフォルトを使用する
  • 1ページあたりのHTMLは平均5KB
  • 1ページあたり平均1個のJPEG画像を含む
  • 変換元のJPEG画像は平均5KB
  • 1ページあたり平均1個のGIF画像を含む
  • 変換元のGIF画像は平均0.5KB
  • HTMLのキャッシュヒット率は0%、画像のキャッシュヒット率は50%
  • Full GCを許容する時間間隔は5分
TOP