RSSフィードについて

RSSリーダーで、フォーラムの新着投稿情報がチェックできます。
詳しくは下記ページを参照して下さい。

RSSフィード  RSSフィードについて

ご自由に情報交換の場として御利用ください。
また質問の前には「回答を得るには?」を参照してください。


GroupSessionへの要望があれば参考にさせていただきます。
要望リストも参考にしてください。


 
フォーラム  フォーラム
00_インストール・設定
スレッド  タイトル

OutOfMemoryError (Ver.2.2.1)


[ 1820 ] OutOfMemoryError (Ver.2.2.1)
投稿者: ノルマンディー
投稿日時:  2009/02/12 18:33:45
tomacatとapacheを連携させて利用しており、2.2.0から2.2.1へとアップデートを行いました。
アップデート後に、施設予約で「施設予約登録」を表示させようとすると以下のようにエラーになります。

サーバエラーが発生しました。
回線が込み合っている可能性があります。
時間をおいて再接続してください。

ログの詳細は次に記載します。

他にも自動リロードに失敗したり、tomcat単体でも用いてもダメでした。
メモリ不足が原因かと思い、Tomcatに割り当てるメモリを増やしましたが状況は全く改善されませんでした。
また、tomcatやPC自体の再起動も行いましたが状況は変わりませんでした。
2.2.0に戻したら正常に稼動するので、現在は仕方なく2.2.0に戻して稼動しています。

2.2.1で稼動するための対処法はありますでしょうか?

当方の環境は
OS: win2k SP4
メモリ: 512M
JDK6 Update7
Tomcat5.5.26
Apache2.2.9

です。
  引用返信
[ 1821 ] Re: OutOfMemoryError (Ver.2.2.1)
投稿者: ノルマンディー
投稿日時:  2009/02/12 18:35:19
上記のエラーの時に表示されるエラーログです。

java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Unknown Source)
at java.util.Arrays.copyOf(Unknown Source)
at java.util.ArrayList.ensureCapacity(Unknown Source)
at java.util.ArrayList.add(Unknown Source)
at jp.groupsession.v2.rsv.rsv110.Rsv110Biz.__getMinuteCombo(Rsv110Biz.java:653)
at jp.groupsession.v2.rsv.rsv110.Rsv110Biz.__setKikanCombo(Rsv110Biz.java:517)
at jp.groupsession.v2.rsv.rsv110.Rsv110Biz.__setSinkiData(Rsv110Biz.java:127)
at jp.groupsession.v2.rsv.rsv110.Rsv110Biz.setInitData(Rsv110Biz.java:82)
at jp.groupsession.v2.rsv.rsv110.Rsv110Action.__doInit(Rsv110Action.java:122)
at jp.groupsession.v2.rsv.rsv110.Rsv110Action.executeAction(Rsv110Action.java:89)
at jp.groupsession.v2.struts.AbstractGsAction.execute(AbstractGsAction.java:123)
at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)
at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

続く
  引用返信
[ 1822 ] Re: OutOfMemoryError (Ver.2.2.1)
投稿者: ノルマンディー
投稿日時:  2009/02/12 18:35:41
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:679)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:461)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:399)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
at org.apache.struts.chain.commands.servlet.PerformForward.handleAsForward(PerformForward.java:113)
at org.apache.struts.chain.commands.servlet.PerformForward.perform(PerformForward.java:96)
at org.apache.struts.chain.commands.AbstractPerformForward.execute(AbstractPerformForward.java:54)
at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
  引用返信
[ 1823 ] Re: OutOfMemoryError (Ver.2.2.1)
投稿者: BLEND
投稿日時:  2009/02/12 18:46:46
メモリの割当は何メガですか?
また割当方法は?
  引用返信
[ 1830 ] Re: Re: OutOfMemoryError (Ver.2.2.1)
投稿者: ノルマンディー
投稿日時:  2009/02/13 13:06:16
BLEND さん

> メモリの割当は何メガですか?
> また割当方法は?

サポートの「Tomcatの簡単なチューニング」の方法で最大256Mを割り当てました。
2.2.0では全く問題なく稼動するのですが...
  引用返信
[ 1873 ] Re: Re: Re: OutOfMemoryError (Ver.2.2.1)
投稿者: ノルマンディー
投稿日時:  2009/02/23 11:34:59
メモリを512Mから2Gに増やし、割り当てもさらに増やしましたが解決しません。

2.2.1にアップデート後に2.2.0のデータ(db、file、backup)をコンバートせずに施設予約を試したところ、施設は正常に予約できました。
しかし、データをコンバート後に施設を予約しようとすると、上記のエラーが起こり、それにあわせてtomcatのCPU使用率が100%になってしまうようです。

過去のログを参照にしてコンバートの際にdb.xxxx.logを除いて行ってみましたが状況は変わりませんでした。

どなたか解決策をご教授いただけませんでしょうか?
  引用返信
[ 1874 ] Re: Re: Re: Re: OutOfMemoryError (Ver.2.2.1)
投稿者: ふぁんぐす
投稿日時:  2009/02/23 12:03:50
始めまして。

> 2.2.1にアップデート後に2.2.0のデータ(db、file、backup)をコンバートせずに施設予約を試したところ、施設は正常に予約できました。
> しかし、データをコンバート後に施設を予約しようとすると、上記のエラーが起こり、それにあわせてtomcatのCPU使用率が100%になってしまうようです。
データのコンバートとは何を指すのでしょうか?
私も2.2.0から2.2.1にしましたが、単純にコピーペーストを行うだけだと思うのですが……

http://www.gs.sjts.co.jp/v2/support/update_2.2.1.html
ここを見て実施されてますか?
  引用返信
[ 1875 ] Re: Re: Re: Re: Re: OutOfMemoryError (Ver.2.2.1)
投稿者: ノルマンディー
投稿日時:  2009/02/23 13:20:34
ふぁんぐす さん

> データのコンバートとは何を指すのでしょうか?
すみません。こちらの表現が悪かったです。
アップデート後に、2.2.0のデータを移行することです。

> 私も2.2.0から2.2.1にしましたが、単純にコピーペーストを行うだけだと思うのですが……
> http://www.gs.sjts.co.jp/v2/support/update_2.2.1.html
> ここを見て実施されてますか?
その通りに行っております。
今までにも何度もアップデートを行っておりますし、必ずtomcatを停止してから作業を行っております。

何度もやり直してみましたが、データの移行後に必ず施設予約に不具合が出るという状況でして...
  引用返信
[ 1879 ] Re: OutOfMemoryError (Ver.2.2.1)
投稿者: snip
投稿日時:  2009/02/25 09:16:08
Groupsession2.2.0では、H2 Database Engineの
TBL[RSV_ADM_CONF]に
RAC_HOUR_DIVの項目がありませんが、

Groupsession2.2.1では、H2 Database Engineの
TBL[RSV_ADM_CONF]に
RAC_HOUR_DIVの項目が追加されています。

 2.2.1から、テーブル項目名が追加されているようですのですが、
下記ソースコード(1)の部分で2.2.0では、RAC_HOUR_DIV登録されていないので、
nullでエラーになると思います。

 恐らく、JTS様の移行手順どおりにやるとうまく動作しないと
思います。2.2.0のTBL[RSV_ADM_CONF]にRAC_HOUR_DIV(integer)の項目追加と、
初期値として10でも入れておけば動くようになると思います。

 
-------------------------------------------------
Rsv110Biz.java抜粋(Gsession 2.2.1 __getMinuteCombo())
-------------------------------------------------
private ArrayList<LabelValueBean> __getMinuteCombo()
throws SQLException {

ArrayList<LabelValueBean> labelList = new ArrayList<LabelValueBean>();
//施設予約管理者設定より時間間隔を取得
RsvAdmConfDao confDao = new RsvAdmConfDao(con_);
RsvAdmConfModel confModel = confDao.select();
int confMin = GSConstReserve.DF_HOUR_DIVISION;

if (confModel != null) {
confMin = confModel.getRacHourDiv(); <---(1)最初にこの部分がエラーなのでは?
}

//コンボ作成
int min = 0;
for (int i = 1; min < 60; i++) {
labelList.add( <----ここで転けているようです。
new LabelValueBean(
StringUtil.toDecFormat(min, "00") + "分",
String.valueOf(min)));
min = i * confMin;       <---(2)次にここで、nullになっている?
}

return labelList;
}
-------------------------------------------------
  引用返信
[ 1880 ] Re: Re: OutOfMemoryError (Ver.2.2.1)
投稿者: snip
投稿日時:  2009/02/25 09:16:48
手軽なのは、__getMinuteCombo()を2.2.0に戻して、ビルドしてしまうのも手だと
思います。

-------------------------------------------------
Rsv110Biz.java抜粋(Gsession 2.2.0 __getMinuteCombo())
-------------------------------------------------
private ArrayList<LabelValueBean> __getMinuteCombo() {

ArrayList<LabelValueBean> labelList = new ArrayList<LabelValueBean>();

//00分~50分まででコンボを作成
for (int i = 0; i <= 5; i++) {
labelList.add(
new LabelValueBean(
StringUtil.toDecFormat(i * 10, "00") + "分",
String.valueOf(i * 10)));
}

return labelList;
}
-------------------------------------------------
  引用返信
[ 1881 ] Re: Re: OutOfMemoryError (Ver.2.2.1)
投稿者: snip
投稿日時:  2009/02/25 09:25:59

confMin = confModel.getRacHourDiv(); <---(1)最初にこの部分がエラーなのでは?


RsvAdmConfModel confModel = confDao.select();<---(1)最初にこの部分がエラーなのでは?

に訂正です。

 これでも完全に理解できているとは言えませんが、ソースを見る限りでは、エラーになると思います。
ただ、この場合エラーとしてNullDefaultExceptionがでてくると思うので、OutOfMemoryError
のエラーでは説明が付かないのかとまだ疑問点は残ります。
  引用返信
[ 1882 ] Re: OutOfMemoryError (Ver.2.2.1)
投稿者: HH
投稿日時:  2009/02/25 10:00:02
問題が大きくなっていますが、
私が見る限りエラーの内容は単純です。

java.lang.OutOfMemoryError: Java heap space

とある様にメモリ不足となっているだけです。

確認事項として
 ・メモリ割当の設定が正常に行われているか
 ・他のアプリケーションがメモリを消費していないか

私の場合、別システムで使用していたDB(PostgreSQL)がメモリを消費していたため、
Tomcatがメモリ不足となっていたことがあります。


※DBの項目追加については下記のクラスで実行されているので、項目がなくてエラーになるということは
ありえないと思います。

jp.groupsession.v2.convert.convert221.dao.ConvTableDao
  引用返信
[ 1884 ] Re: Re: OutOfMemoryError (Ver.2.2.1)
投稿者: snip
投稿日時:  2009/02/25 12:40:44
> ※DBの項目追加については下記のクラスで実行されているので、項目がなくてエラーになるということは
> ありえないと思います。
>
> jp.groupsession.v2.convert.convert221.dao.ConvTableDao
 たぶん、OutOfMemoryErrorの要因はメモリ不足が妥当だと思います。
 
ただ、ConvTableDao.javaに[RSV_ADM_CONF]を変更するところが無いのが、
気になります。

* <br>[機 能] alter tableなどのDBの編集を行う
* <br>[解 説]
* <br>[備 考]
* @throws SQLException SQL実行例外
*/
public void alterTable() throws SQLException {

//注意/////////////////////////////////////////////////////////
//レコードが1件もない場合はdrop → create を行う
//jdbc経由でalter tableを流す時、レコードがないとエラーになる為
///////////////////////////////////////////////////////////////

try {

//BBS_USERの編集を行う
__alterBbsUser();

//SCH_DATAの編集を行う
__alterSchData();

//CIR_USERの編集を行う
__alterCirUser();

//SCH_PRI_CONFの編集を行う
__alterSchPriConf();

//RSV_SIS_YRKの編集を行う
__alterRsvSisYrk();

//CMN_USRM_INFの編集を行う
__alterCmnUsrmInf();

//SRH_USERの編集を行う
__alterSrhUser();

//SRH_ACONFの編集を行う
__alterSrhAconf();

//CMN_CONTMの編集を行う
__alterCmnCntm();

} catch (SQLException e) {
throw e;
}
}
ちょっと疑問です。
  引用返信
[ 1886 ] Re: OutOfMemoryError (Ver.2.2.1)
投稿者: HH
投稿日時:  2009/02/25 13:06:38
snipさん

確認しているパッケージが違います。

クラス名は「ConvTableDao」と同じですが、
パッケージ名が異なります。

こちらをご確認ください
jp.groupsession.v2.convert.convert221.dao.ConvTableDao
  引用返信
[ 1888 ] Re: OutOfMemoryError (Ver.2.2.1)
投稿者: GSユーザー
投稿日時:  2009/02/25 14:48:41
弊社でも類似の現象が起こりました。

弊社内で起こった現象の原因も「java.lang.OutOfMemoryError: Java heap space」ですが、エラーが起こったクラスは異なるようです。
ただしトリガーとなる機能としては「施設予約」で同一です。

現象が回避できた対策からご報告しますと
・・・「施設予約」「管理者設定」内「施設予約基本設定」の設定値がいつの間にかnull(何も設定されていない)になっていたため、設定しなおした
ところ正常動作するようになりました(設定値がないことで無限ループなどになり、ヒープ領域を使い果たしたと推測できます)。

この設定項目はラジオボタンであるため、通常の操作では未設定状態になることはありえないはずです。

何らかのプログラム不具合により設定値が失われた可能性が高いと思われますね。
  引用返信
[ 1889 ] Re: Re: OutOfMemoryError (Ver.2.2.1)
投稿者: snip
投稿日時:  2009/02/25 15:04:55
//施設予約
//ALTER RSV_ADM_CONF
sql = new SqlBuffer();
sql.addSql(" alter table RSV_ADM_CONF add RAC_HOUR_DIV integer default 10");
sqlList.add(sql);

 ありました。でも10入れると直る可能性があるような・・・・・・・・・・。気がするだけですけど。(^^;;
 とりあえず、管理者設定をやり直すのも一つの手のような・・・・・・・・・・・・・・・・・・・・・・・・・・・・
  引用返信
[ 1890 ] Re: OutOfMemoryError (Ver.2.2.1)
投稿者: ノルマンディー
投稿日時:  2009/02/25 15:17:29
snipさん、HHさん
色々なご指摘をありがとうございます。

やはりTomcatへのメモリの割り当ての方法が悪いのでしょうか?
どのように確認してよいかも分かりません...
当方はインストーラー版のtomcat5.5.25を用いており、アップデートおよびメモリの割り当ては下記方法にて行いました。

<アップデート>
1) tomcatを停止し、gsession2フォルダを移動後、作業ディレクトリを削除。
2) gsession2.war(Ver.2.2.1)を配置(上書き)。
3) tomcatを起動後にGSを開きいて2.2.1が正常にインストールされたことを確認。←この段階では施設予約に異常は無し。
4) GSを閉じてtomcatを停止。
5) dbフォルダを削除後、1)で移動したVer.2.2.0のdb、file、backupフォルダをコピー。
6) tomcatを起動してGSを開く。←施設予約をするとエラー

<メモリの割り当て>
1) tomcatを停止。
2) システム>詳細設定>環境変数から、ユーザーの環境変数に下記の値を作成。
変数名:CATALINA_OPTS
変数値:-Xmx1024M -Xms512M
3) tomcatを起動。

他のスペック(WinXP SP3、RAM:2G、メモリの割り当てせず)のマシンでも2.2.1を新規にインストールし、同じデータの移行を試してみましたが、こちらでも2.2.0のデータを移行した段階で、施設予約でエラーが出てしまいます。
こちらも上記のメモリの割り当て作業を行っても状況は変わりませんでした。
  引用返信
[ 1891 ] Re: Re: OutOfMemoryError (Ver.2.2.1)
投稿者: ノルマンディー
投稿日時:  2009/02/25 15:28:32
GSユーザー様の書き込みにあったように、当方でも施設予約の管理設定を調べたら、施設予約基本設定が未選択になっていました。
任意のものに設定をしたところ、正常に動作するようになりました。

皆様、本当にありがとうございました。
  引用返信
 
スレッドURL:
 

クラウド版グループウェアbycloud

Twitter
開発スタッフのつぶやき http://twitter.com/gsession_jts
Facebook
メールマガジン
GroupSessionのセキュリティ情報、アップデート情報をお伝えするメールマガジンです。(無料)
メルマガ『速報!GroupSession』
ブログ
スタッフによる開発日誌を公開しています。
「Public JTS スタッフブログ」


Copyright 日本トータルシステム株式会社