- PR -

Tomcat+Java+CGIの高速化

1
投稿者投稿内容
ゆいな
ベテラン
会議室デビュー日: 2006/01/19
投稿数: 89
投稿日時: 2007-04-12 21:55
お世話になってます。

Tomcat+Java+CGIの高速化についてご意見下さい。

リクエスト送信から応答受信までの処理時間が
0.xxx秒までと決まってしまっている(性能要件)ので、
少しでも早い処理を実装する必要があります。

PerlであればFastCGIのようなものを使って高速化を図れる
と聞いたのですが、Javaで同じような考え方はとれるのでしょうか。
そもそも、Javaではどのような方法で高速化を図れるのでしょうか。

また、OracleへのDB接続が頻繁に発生するので
それをなくすにはどうすればよいかも検討したいです。
CGIは断続的(ポーリングするイメージ)に使われますので
初回リクエストでDBを検索してメモリーに展開し、2回目以降の
リクエストでは、展開した情報を参照するような事ができれば
わざわざDBに接続する必要がなく、高速化を図れると思ったのですが
そういった事は可能なのでしょうか。

よろしくお願いします。
flatline
大ベテラン
会議室デビュー日: 2005/09/22
投稿数: 102
投稿日時: 2007-04-12 23:49
まず、コネクション・プーリングで検索・調査されてはいかがでしょう?
データベースへの接続は、とても負荷が高いので、その部分を何とかする
だけで、かなりの高速化になります。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2007-04-13 00:08
"CGI"とはこの場合サーバサイドで行う処理のことを指しているのでしょうが、Tomcat では通常いわゆる”CGI"(=リクエスト毎にプロセスを起動する)は行いません。

一般的に Tomcat 上で動くプログラム = サーブレット はプロセスを起動することなく JVM 内でマルチスレッドで動作しますので一般的な CGI よりも劇的に高速です。

Java の Web アプリケーションの参考書やサイトではコネクションプーリングもサーブレットのプログラミングも説明されているはずです。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-04-13 00:14
引用:

Tomcat+Java+CGIの高速化についてご意見下さい。


TomcatのCGIServletを使いたいのですか?
外部プロセスを都度起動するはずなので、結構オーバーヘッドが大きくて遅いと思いますが、
速度要件があるのであれば、そもそもミドルウェアの選択が間違っていると思います。

それとも、もしかしてCGIではなく普通のTomcatで動くサーブレットの事を言っていますか?
ちょっと質問の内容では意味がわかりにくいです。

引用:

また、OracleへのDB接続が頻繁に発生するので
それをなくすにはどうすればよいかも検討したいです。
CGIは断続的(ポーリングするイメージ)に使われますので
初回リクエストでDBを検索してメモリーに展開し、2回目以降の
リクエストでは、展開した情報を参照するような事ができれば
わざわざDBに接続する必要がなく、高速化を図れると思ったのですが
そういった事は可能なのでしょうか。


CGIではなくサーブレットを使うと仮定して、
高速化させるために以下のような手法が使われる事が多いです。

・コネクションプーリング
  ->DB接続を複数あらかじめ用意して貯めておく、そしてそれらを使いまわす
・データキャッシュ
  ->DBに変更がなく、かつメモリ上にデータがあればそこから取得

という感じで、データアクセス系のフレームワークにはキャッシュ機能を持つものがあります。
コネクションプーリングはTomcatに付属しています。
1

スキルアップ/キャリアアップ(JOB@IT)