- ベストアンサー
Webサーバの構成について
- Webサーバの構成について考えた時に分からない点がいくつかあるので教えてください。
- Webサーバのメモリの構成サイズやWAN側の回線帯域、最大使用可能メモリの上限について教えてください。
- Windows2008 64bitのIIS7.0を使用した場合は使用可能最大メモリは32GB。Linux系OSでApache Tomcatの構成でWebサーバーを使用した場合の使用可能最大メモリの上限やUnix,Linux系OSでのメモリの上限についても教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>>ダウンロードも同様で、各接続当たり数KB~数百KBのバッファがあれば十分であり、 >>各接続にファイル容量分のメモリ割当は不要と考えるのが一般的です。 >上記についてですが、過去にASP.netでダウンロード処理を実装し、負荷テストを行った際、 >ダウンロードを行うファイルサイズ分、Webサーバのメモリが食われていた記憶しています。 > >ASP.netでファイルダウンロードを行う場合、 >まずダウンロードファイルがすべてASP.net管理?のメモリに一旦おかれて >そこからパケット分割でクライアントにダウンロードファイルが転送される、 >という認識なのですが、これがそもそも誤っているという事でしょうか? [PRB] Response.WriteFile がサイズの大きなファイルをダウンロードできません。 http://support.microsoft.com/kb/812406/ja その挙動は、上記KBの件に該当していませんか? ファイルダウンロードによく利用されるHTTPResponseのメソッドには、 HttpResponse.WriteFile…メモリバッファリング有 HttpResponse.TransmitFile…メモリバッファリングなし という挙動の違いがあり、前者を利用すると、 kaihatushaさんのような状態に陥ってしまいます。 # MSDNのHttpResponse.WriteFileのリファレンスにも、 # 上記KBへのリンクがあり、その筋の業界ではチェックリストに載せるぐらいの # 結構有名な話です。 結論として、 「ファイルサイズ分、Webサーバのメモリが食われるかどうか」は Webアプリの実装手法に依存する話であり、 アプリ開発者は、Webサーバのメモリ消費を抑えるよう実装する必要があります。 >Apache Tomcatの構成でデータダウンロードを実装しても >上記のようにダウンロードファイル分、 >メモリが食われるんだろうなあっと思っていたのですが・・・。 そのようにならないよう、実装手法を考えましょう。 とまあ、こんな話もあるので、 Webサーバのメモリ見積りは、 ・過去事例による机上計算 ・プロトタイプ開発環境でのプロトタイプ性能負荷テスト ・本番環境での運用状態を想定したシステム性能負荷テスト と段階を踏んで見積り精度を高めていくのがあるべき姿です。 また、性能テスト段階で、サーバ側のメモリ不足が発覚したとしても、 ・プログラムの実装不備が重大原因の場合は、プログラム改修を行う。 ・不適切なパラメータ設定が重大原因の場合は、パラメータ設定を見直す。 ・性能負荷が実態に即していない場合は、性能負荷テスト条件を見直す。 など、安易にメモリ増強せずに、適切な対応を行うことが重要になります。
その他の回答 (1)
- onosuke
- ベストアンサー率67% (310/456)
>・ショッピング用サイト >・業務用のWebアプリでデータの参照で帳票ダウンロードや… どちらの場合でも、WEBアプリのメモリ必要量は、 WEBアプリ本体やWEBアプリで利用しているミドルウェアの仕様、 システム構成、データ量、求める性能レスポンス などに大きく依存します。 一般的にこれぐらいといった目安は存在しません。 一般的な目安は無いので、 アプリケーション構成や業務構成をある程度決定した後、 過去の類似事例データを元にサーバ構成を考えるのが普通です。 アプリケーションが市販パッケージであれば、 販売元から規模別のサンプル構成を提供してもらうことも可能でしょう。 なお、ダウンロードに必要なメモリ量は明らかに過大見積りと思われます。 DVD(4GB以上)を再生するのに、4GB以上のメモリは不要で、256MB程度のメモリでも十分ですよね。 ダウンロードも同様で、各接続当たり数KB~数百KBのバッファがあれば十分であり、 各接続にファイル容量分のメモリ割当は不要と考えるのが一般的です。 もっとも、帳票管理、ファイル管理のミドルウェアを導入する場合は、 複雑な管理を行うためにかなりのメモリ量を要求されることもありますが、 それでも、たかだが100接続程度で20GBは欠陥製品扱いされちゃいますね。 >Windows2008 64bitのIIS7.0を使用した場合は使用可能最大メモリは32GB。 これは、StandardEditionの制限ですね。 EnterpriseやDatacenterではほぼ※制限なしです。 >またUnix,Linux系OSでは積めるメモリの上限というのはありますでしょうか? 商用ディストリビューションでは、Windowsと同様Editionによる制限を設けているものもあります。 カーネル単体では、ほぼ※制限なしです。 ※「ほぼ制限なし」とは、上限が現在販売されているハードウェアのメモリ上限と比べて 十分大きいため、実質的な制限がないこと。
補足
いろいろと回答どうもありがとうございます。 >ダウンロードも同様で、各接続当たり数KB~数百KBのバッファがあれば十分であり、 >各接続にファイル容量分のメモリ割当は不要と考えるのが一般的です。 上記についてですが、過去にASP.netでダウンロード処理を実装し、負荷テストを行った際、ダウンロードを行うファイルサイズ分、Webサーバのメモリが食われていた記憶しています。 ASP.netでファイルダウンロードを行う場合、まずダウンロードファイルがすべてASP.net管理?のメモリに一旦おかれてそこからパケット分割でクライアントにダウンロードファイルが転送される、という認識なのですが、これがそもそも誤っているという事でしょうか? Apache Tomcatの構成でデータダウンロードを実装しても上記のようにダウンロードファイル分、メモリが食われるんだろうなあっと思っていたのですが・・・。
お礼
なるほど・・・。 今まで誤って持っていた認識が修正されて非常に助かりました。 どうもありがとうございました!!