dポイントプレゼントキャンペーン実施中!

サーバのPFメモリ使用量が急上昇し困っています。

<logic:iterate>タグを使用して1000行くらいのテーブルを作成する検索ページなのですが、
数回の検索ではなんともないのですが、
何度か検索を繰り返すと、サーバのPFメモリ使用量が急激に上昇します。
tomcatを再起動しないとサーバは正常に作動してくれませんでした。

JSPに表示させずに検索を行ってみると、何度検索しても問題ありませんでした。

どのような原因でこのようなことが生じるのかわかりません。
すいませんがよろしくお願いします。

Tomcat 4.0.1
struts 1.1
windows 2000 server

A 回答 (1件)

数回の検索では問題なく、複数回の検索でメモリ使用量が増えると言うことは、JSPコンパイル時が原因ではありません。

JSPがコンパイルされるのは、最初に表示する時の1回だけです。

考えられる一番の可能性として、メモリリークか、大量データをメモリに格納しつづけている事が考えられます。

> 1000行くらいのテーブルを作成する検索ページ
・これは、DB検索をして、1000行分のデータをJSPで表示しているということでしょうか?
・DBの検索は、JSPではなく、Actionクラス以降のビジネスロジック層で行っているのでしょうか?
・DBの検索は、10000件あった場合、カーソルなどを使用して、1000件分だけを取得しているのでしょうか?それとも、10000件全部メモリ上に読み込み、ロジックで1000件取得、または、JSPのiterateのoffset, lengthで1000件を表示させているのでしょうか?

> JSPに表示させずに検索を行ってみると…
・JSPに表示させずに検索とは、具体的にどうやって検索したのですか?JSPのiterateタグをコメントアウトしただけですか?
・それとも、JUnitなどを使って、ビジネスロジックだけを呼び出したということでしょうか?

補足要求ばかりで申し訳ないのですが、現状ではこの程度の回答しかできません。

この回答への補足

neuron-xさん、ありがとうございます!
とても参考になります。

> これは、DB検索をして、1000行分のデータをJSPで表示しているということでしょうか?
・その通りです。
 検索結果を格納したbeanをArrayListオブジェクトに格納し、JSPで<logic:iterate>タグを使用し表示しています。

> DBの検索は、JSPではなく、Actionクラス以降のビジネスロジック層で行っているのでしょうか?
・これもその通りです。

> DBの検索は、10000件あった場合、カーソルなどを使用して、1000件分だけを取得しているのでしょうか?それとも、10000件全部メモリ上に読み込み、ロジックで1000件取得、または、JSPのiterateのoffset, lengthで1000件を表示させているのでしょうか?
・10000件あった場合は10000件表示されます。
現状では、検索結果が最大2000件位だと思いますので特に制限は設けない方針です。

300件くらいの検索からこの現象が起きることから、やはりコードに問題がありそうでしょうか?

> JSPに表示させずに検索とは、具体的にどうやって検索したのですか?JSPのiterateタグをコメントアウトしただけですか?
それとも、JUnitなどを使って、ビジネスロジックだけを呼び出したということでしょうか?
・検索条件入力画面→Actionクラス→DB検索クラス(ArrayListにbeanを格納)→結果表示画面
という感じの処理なのですが、
結果表示画面のiterateタグを削除しただけです。
この状態では問題なく作動します。


まだまだ説明不足なところがあると思いますので、
また補足要求の方があればよろしくお願いします。

補足日時:2005/03/20 16:56
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!