人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: tatsu7
●カテゴリ:コンピュータ インターネット
✍キーワード:Java mod_perl ON Ruby Web
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● jestersera
●50ポイント

単純な処理速度のみで言えば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

◎質問者からの返答

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

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


2 ● b-wind
●50ポイント

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


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

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

◎質問者からの返答

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


3 ● まきのっぴ
●50ポイント

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

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

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

ケースによって

Perl > Java > Ruby または

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

◎質問者からの返答

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


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

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

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

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


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

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

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

◎質問者からの返答

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


5 ● jestersera
●70ポイント

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

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

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

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


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

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


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

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


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

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

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


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

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

◎質問者からの返答

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ