• 締切済み

Webサーバのハードウェアの選定基準

ゼロからWebサイト(RedHat+Apache+Tomcat+MySQL)をサーバ選定から構築するとします。そのとき、同時アクセス数や最繁時集中率などが全然見ていない場合(ヒットするかどうかも全然判らない)とします。ここでは回線状況などは収容先が決まっていないので考慮しないとします。 逆に考えて、この組み合わせであれば「1秒あたりのトラヒック処理可能数」や「最大同時セッション数」を調べるにはどうしたらよいのでしょうか。時々レンタルサーバで同時アクセス数60とか書かれている所をみかけますが、あれは何を根拠に算出しているのでしょうか? サーバ(ハード)を売っているメーカに聞けば教えてもらえるものなのか、まず実機を買って試さないとどうにもならないのか、過去事例を洗うしかないのか、Apache FoundationやRedhat.comなどに理論上の最大値などが書いてあるものなのか(調べた限り無かったのですが)、そもそもソフトの問題なのかハードの問題なのかOSの問題なのか、何がボトルネックになるのかすら判っていません。 こんな私に愛の手を・・・

みんなの回答

回答No.3

>お客さんに「このマシンなら理論値として1秒に100処理できますよ!但しデータ量などは考慮してません」と言えるのですが。10万円のサーバで良いのか1000万のサーバを買うのか、どちらでも構わないのですが、じゃあそれを選んだ理由は何?と聞かれて「そりゃこういうわけです」と胸を脹れれば万事OKなんです(汗 私も仕事上同様の状況があるのでお気持ちはお察ししますが、あまり良い提案とは思えません。100処理できるから選定したのに、実際には10も処理できなくて問題になることもあるからです。やはり現実に即した実測に基づく数値のほうが、自分のためにもクライアントのためにもなるというのが私の経験値です。 といっていても始まらないでしょうから、こんなのはいかがでしょうか。 http://www.spec.org/web2005/ このあたりの数値だったらメーカーなりベンダーから出てくる可能性はありますね。

del4thta
質問者

お礼

度々のご回答ありがとうございます。 やっぱりベンチでの性能評価をメーカから貰うのが一番なんでしょうか。実は既にいるお客さんが本件を言い出した始末でして、こちらは今までの経験から「このサーバ」というのを出したのです。しかし「そのサーバを選んだ根拠は?」と言われ、今までの経験と実稼動のサーバを見て、と話したのです。しかしそれで納得せず「本件二つの内容を答えろ」と言ってきている訳です。金があるんなら余裕のある&将来を見越したサーバを選定したいのですが、「それじゃなきゃダメならそれで構わないが、数字と理由が明確にならないとウチも納得できない」と言われておりまして・・・ ぶっちゃけ評価機をレンタルしてご提案のように試験でもすれば良いのですが、計算によって求まる値やどこかに既に明記されている内容であれば(評価機レンタルもタダじゃないので)話が早いと思った次第です。これがFWなどならメーカが2000トラヒックOK!と明示しているので話は早いんですけどね(涙

回答No.2

同時セッション数はapacheの設定しだいです。しかしながら、設定上で増やせばいいかというとそういうわけでもありません。 セッションが増えればCPUやメモリに負荷がかかり、無負荷時より一つの処理時間が増えます。apacheがさらにセッションを受け付けていくと、処理待ちのプロセスばかりになり、ブラウザがタイムアウトを起こしたりして結局サイトダウン状態になります。 そのほかにもtomcatやMySQLの問題も同様にあり、一概にハードウエアのスペックによる判断はできません。 ちゃんとやるなら、開発中のマシンで構わないので負荷試験を行い、ボトルネックがapacheなのかtomcatなのかMySQLなのか、それらの設定で改善するか、プログラムがタコなのかsql文が悪いのか、スキーマに改善の余地はないか、そもそも設計や仕様に無理がないかなどを点検します。 さらに、プログラムの設計にスケーラビリティを持たせて置きます。つまり、もし処理の上限になってしまっても、単純にサーバの数を増やせばいいように初めから設計しておくのです。 同じ構成(httpd+tomcat+MySQL)を複数設置するとか、各機能ごとに別のサーバにするとか、さらにDBだけ複数台にするとかの対応が簡単にできる仕様にしておきます。 このようにしておけば、アクセスの少ない初期段階から無駄なリソース投資を行わなくても、徐々に処理能力の高いシステムに無理なく移行できます。 ボトルネックがどこにあるのかはまちまちです。ベンダーに聞いたって一般的な性能評価の数値しか出てきませんし、そんなものほとんど役に立ちません。 現実的には自分で負荷試験を行い、それを元にサーバを選定することになります。

del4thta
質問者

お礼

ご回答ありがとうございます。 つまりこの構成ではHWやSWにて定められるような【明示的な上限】は存在しないと考えてよいのでしょうか。もちろんライセンス的な問題や100B/TにGEtherレベルのトラヒックを与えるような事は考慮しないとしてですが。WinXPProにて10セッションしか張れない件で以前問題視された事がありまして、RHELにはそういった上限は無いのか心配されているのです。 同時接続制限が10なら10でどこかのURLに明記してあれば「書いてあるんでここまでです」と言えますし、単純にその同時アクセスの処理に0.1秒かかるとこれもメーカが提示してくれれば、【理論上】1秒には100セッションの処理が可能です!と言えるのですが。 ソフトも同様に、極論としてSQLひとつ叩くだけでもデータ量によって全然処理スピードは違うわけですよね。だとするとここではソフトの作りは別問題で、お客さんに「このマシンなら理論値として1秒に100処理できますよ!但しデータ量などは考慮してません」と言えるのですが。10万円のサーバで良いのか1000万のサーバを買うのか、どちらでも構わないのですが、じゃあそれを選んだ理由は何?と聞かれて「そりゃこういうわけです」と胸を脹れれば万事OKなんです(汗

回答No.1

RedHat+Apache+Tomcat+MySQLでの構築との事ですが、見たところサーバサイドでのWEBアプリケーションでも構築されるのでしょうか?Tomcat使うならJSPとか?? 私も以前ほぼ同じ構築(CentOS+Apache+Tomcat+MySQL)でWEBサーバを作りましたがアプリケーションの連携・スクリプトを組むのならその処理内容にも左右されると思いますので、一概に同時アクセス数を算出するのは困難だと思います。サーバサイドでのWEBアプリケーションになると当然サーバのスペックも大きく関わってきますので・・・。

del4thta
質問者

お礼

お早い回答ありがとうございます。 アプリについての前提条件が抜けていましたね。えー、金に糸目はつけません。つまり常識範囲内でHW構成に幾らかかっても構わないわけです。参考程度に考えている構成はDCXeon+最大MEM+SAS-HDDです。参考(http://www.express.nec.co.jp/pcserver/products/100/140re4/index.html) つまり分業させることなく一台のサーバに全て突っ込み、内部処理の時間を考慮しない場合の「1秒あたりのトラヒック処理可能数」や「最大同時セッション数」の最大値の「求め方」が知りたいと考えています。求め方というより例えば最大同時セッション数だとWindowsなら10セッションしか張れないよ。じゃあRHELだとどうなんだろう?ってのが明確になれば良いと思っています。それにしても1秒あたりのトラヒック処理可能数というのは検証するしかないのかな?と思っていますが。