質問: アプリケーションサーバのメモリをいくら積めばいいのかの見積もりをする方法が分からず彷徨っております。 WebサーバにはApache アプリケーションフレームワークにはDjangoを使い、 一台のサーバに上記のミドルウェアを両方積む予定です。 データベースは別ノードにあります。 現状ミドルウェア毎にメモリを何に使うかを洗い出して、 それぞれの用途ごとに使用されるメモリ量を出そう! と考えたのですが、 どういった軸で探し出せばよいのか、またメモリ量を計算すればよいのか途方に暮れております。 メモリサイズの算出の経験がある方がいらっしゃいましたら 手法や参考になる書籍などご教示いただけますと幸いです。 どうぞよろしくお願いいたします。
回答: 非常に奥の深いテーマですね。 見積は経験がものを言うと思いますが、初めての構成だとそうも行きませんので計算材料を揃えて求めます。 (1アクセスに必要な容量×最大同時接続数+最低でも必要になる容量)×将来性係数 * 最大同時接続数 : ある瞬間に同時に接続しているユーザ数(セッション数) * 最低でも必要になる容量 : OS、ミドル、アプリを動かす為に必要な最低容量 * 1アクセスに必要な容量:クライアントからのアクセス毎に使用される容量 * 将来性係数:計算した容量に将来性を加味した係数をかけます。1.5倍とか2倍とかざっくりとですが...。 参考になる情報としては、「ソフトウェアの名前 メモリ チューニング」で調べて、動かすソフトウェアの特性を理解するのが良いと思います。 例えば、 Apache の場合は使用する MPM モジュールによってアクセスをさばくときのメモリの使われ方が変わってきます。Django は CGI でしょうか? CGI であれば 1アクセスにつき1プロセスが起動するので プロセスごとの容量×最大同時接続数で求められるでしょう。 ある程度精度が必要であれば、実際に動かして、負荷テストを実施して目標の性能を出せるか検証するのも良いと思います。クラウドサービス等を使えばサーバー調達は簡単ですので、特に今後も同じような環境を作ることが考えられるなら検証した結果は財産になりますので考えてみてください。 ただこういったことは非常に面倒ですので、労力が割りに合わない気もします。 「最初は4GBで足りなければ16GBまで増やせるように」とかもありかなと思います。