mod_perlや Java で作成された Webアプリケーションと、ruby on rail で作られた Webアプリケーションでは、処理速度に違いはあるのでしょうか? ユーザーの数が多く、サーバーの負荷が高い場合、処理速度的には、3つの中で、どの方法が最も有望でしょうか?

あまり専門知識はありませんので、比較的分かりやすく解説があると助かります。

回答の条件
  • 1人5回まで
  • 登録:2006/12/14 22:38:08
  • 終了:2006/12/18 16:32:22

回答(5件)

id:jestersera No.1

jestersera回答回数16ベストアンサー獲得回数12006/12/14 23:27:56

ポイント50pt

単純な処理速度のみで言えばJavaが最速です。

その次がmod_perl。

Ruby on railsはmod_perlに比べて倍くらいは遅いと思います。


これは、サーバー1台でスペック的にCPU・メモリ・ディスクのI/O・ネットワークのボトルネックがほとんど発生しない場合においてです。ディスクI/Oやネットワークがボトルネックになるケースはどの方法でも大体同じです。


今時のサーバーでCPUの速度がボトルネックになるケースはあまりないです。

CPUの速度が問題にならない場合、1度に処理できるリクエストの数はメモリの使用量によります。


実際にサービスを開発するとき、ボトルネックが発生しないことはありません。1台のサーバーでさばききれなくなったときに、どういった方法で対処していくのかで使う技術を選択すればいいと思います。


サーバーのスペックが十分で1台だけならJavaが最適だと思いますが、ホスティングの標準的な専用サーバーのスペックでは十分であることはまれです。それを考慮するとmod_perlが良いと思います。

PHPが選択肢にあるなら、サーバー1台ではPHPを進めますが。


運用とか開発にかかるコストとかスケーラビリティとかスタッフのスキルも考慮するとケースバイケースになってしまうのが実状です。


どの技術に関しても専門的な知識を持っているエンジニアというのはめったにいないため、サーバーのスペックをあげたりサーバーを増やす等といったお金で解決するのが、結局は一番安くなるかと思います(w

id:tatsu7

詳細な情報ありがとうございます!大変参考になりました。

長期的には、複数台で処理する事になると思うのですが、実は、複数台ならば mod_perl の方がよいとおっしゃる意味が良く分かっていないのですが、ご教授頂けますか?

2006/12/15 00:10:33
id:b-wind No.2

b-wind回答回数3344ベストアンサー獲得回数4402006/12/14 23:39:14

ポイント50pt

一般に CGI で作られたアプリケーションは起動にコストがかかるので遅いといわれますが、mod_perl, Java/Servlet は CGI ではありませんし、Ruby on Rails も mod_ruby を使う限りでは同様の条件です。


以上の3社を比べる限りでは一概にどれが処理速度が速いとは言えないと思います。それぞれ一長一短です。

実際には言語自体の処理能力よりは中で行っている処理そのものの効率のやデータのアクセス方法の方が影響度が大きいので、言語自体の処理能力の差は無いといっても差し支えないと思います。

id:tatsu7

mod_rubyというのもあるのですね。知らなかったです。言語処理能力の差がなければ、開発速度が速い Ruby on Railsがよいのかもしれませんね。

2006/12/15 00:12:17
id:pmakino No.3

まきのっぴ回答回数355ベストアンサー獲得回数282006/12/15 00:13:00

ポイント50pt

JavaはPerlよりも比較にならないほど速い?によれば、

計算中心なら Java が有利、そうでないなら (DB を使った Web アプリケーション等はこちら側だと思います) Perl が有利、という結果のようです。

また、Ruby は Perl 等に比べて遅いことで知られていますので、(ちょっと丁度良いソースが見つけられなくてすいません)

ケースによって

Perl > Java > Ruby または

Java > Perl > Ruby のどちらかになると考えられます。

id:tatsu7

参考になりました。DB関連がメインですので、perl の方が早いという事になりそうですね。実際、はてなも確か perl だったと思いますし、かなり優秀なのでしょう。

2006/12/15 00:45:54
id:b-wind No.4

b-wind回答回数3344ベストアンサー獲得回数4402006/12/15 00:59:28

ポイント49pt
複数台ならば mod_perl の方がよいとおっしゃる意味が良く分かっていないのですが

元回答者の方は十分なスペックのサーバーで無い場合 mod_perl の方がよい、と回答されています。

Java はメモリ食いな側面もあるのでそういう回答になったのではと思います。

mod_perl も一度読み込んだスクリプトは基本的には開放しないので使い方を気をつけなければどっちもどっちという気はします。


言語処理能力の差がなければ、開発速度が速い Ruby on Railsがよいのかもしれませんね。

今のところ Ruby on Rails の開発速度は一概には速いとは言えず、開発者自身の資質によるところが大きいです。

優れた技術である事は疑いようも無いですが、今はまだ誰でも使えるようなものではないと思います。

id:tatsu7

僕の誤解も教えて頂きありがとうございます。なるほど、いろいろな意味で、どの言語がいいとは、いえないのですね。

2006/12/15 01:23:44
id:jestersera No.5

jestersera回答回数16ベストアンサー獲得回数12006/12/15 01:58:45

ポイント70pt

Javaの場合、セッション等をレプリケーションしてクラスタリングした場合、その分も多少メモリを消費します。

同時アクセスユーザーが増えた場合、そのメモリの使用量も馬鹿にならないです。

メモリにデータを持たなければいいので、perlやrubyならデータベースに保存するといった事が簡単に実装できます。

Javaの場合はアプリケーションサーバーによって設定方法が違うと思いますが詳細は割愛します。


また、Javaのアプリケーションでセッションをレプリケーションすると、サーバー間でデータをやりとりするのに若干のボトルネックが発生します。ごくわずかですが、これをチューニングするのは(技術面や運用面で)非常に難しいです。

人件費に十分なコストをかけられるなら、チューニングによって得られるメリットは大いです。


Ruby on RailsはCGIやmod_rubyで動かすと結構遅いです。

lighttpd+FCGIやmongrelで動かすと単発のリクエストあたりの処理時間は非常に速いです。


長期的に見てサーバーを複数台にする時、アプリケーションを分割しやすいアーキテクチャを採用するとハードウェアのコストを節約できます。上手くやらないと運用が大変になりますが。

例えば、検索関係の処理や会員管理、管理機能を処理するサーバーを別々のサーバーで処理すると言った感じです。処理が重い処理の部分だけサーバーを増やしていけば対応できます。

そういう面ではperlやRailsの方が開発や運用を考えるとやりやすい気がします。


あと、使用するデータベースで言語を選ぶこともあります。

私はPostgreSQLならpgForestが使えるJava、perlやrubyならスケールアウトしやすいMySQLを選択することが多いです。

id:tatsu7

本当に、詳細な情報ありがとうございます。大変、助かります。

2006/12/15 09:21:25

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

  • mod_perl --summary ** def. mod_perlとは - 意味・解説 : IT用語辞典 http://e-words.jp/w/mod_perl.html Webサーバソフト「Apache」の追加機能(モジュール)の一つで、Perl言語で書かれたプログラムを高速に実行す
  • sessionをDBに格納する理由 railsの本に載っていたsessionをDBに格納する方法 何のためにDBに格納するかいまいちピンと来ていなかったけど ↓のblogをみてやっとなっとくしました http://q.hatena.ne.j
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません