フォーラム:00_インストール・設定
OutOfMemoryError (Ver.2.2.1)
|
[ 1820 ] OutOfMemoryError (Ver.2.2.1)
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
です。
投稿者ノルマンディー 最新書き込み2009/02/12 18:33:45
|
[ 1821 ] Re: OutOfMemoryError (Ver.2.2.1)
上記のエラーの時に表示されるエラーログです。
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)
続く
投稿者ノルマンディー 最新書き込み2009/02/12 18:35:19
|
[ 1822 ] Re: OutOfMemoryError (Ver.2.2.1)
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)
投稿者ノルマンディー 最新書き込み2009/02/12 18:35:41
|
[ 1823 ] Re: OutOfMemoryError (Ver.2.2.1)
メモリの割当は何メガですか? また割当方法は?
投稿者BLEND 最新書き込み2009/02/12 18:46:46
|
[ 1830 ] Re: Re: OutOfMemoryError (Ver.2.2.1)
BLEND さん
> メモリの割当は何メガですか? > また割当方法は?
サポートの「Tomcatの簡単なチューニング」の方法で最大256Mを割り当てました。 2.2.0では全く問題なく稼動するのですが...
投稿者ノルマンディー 最新書き込み2009/02/13 13:06:16
|
[ 1873 ] Re: Re: Re: OutOfMemoryError (Ver.2.2.1)
メモリを512Mから2Gに増やし、割り当てもさらに増やしましたが解決しません。
2.2.1にアップデート後に2.2.0のデータ(db、file、backup)をコンバートせずに施設予約を試したところ、施設は正常に予約できました。 しかし、データをコンバート後に施設を予約しようとすると、上記のエラーが起こり、それにあわせてtomcatのCPU使用率が100%になってしまうようです。
過去のログを参照にしてコンバートの際にdb.xxxx.logを除いて行ってみましたが状況は変わりませんでした。
どなたか解決策をご教授いただけませんでしょうか?
投稿者ノルマンディー 最新書き込み2009/02/23 11:34:59
|
[ 1874 ] Re: Re: Re: Re: OutOfMemoryError (Ver.2.2.1)
始めまして。
> 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 ここを見て実施されてますか?
投稿者ふぁんぐす 最新書き込み2009/02/23 12:03:50
|
[ 1875 ] Re: Re: Re: Re: Re: OutOfMemoryError (Ver.2.2.1)
ふぁんぐす さん
> データのコンバートとは何を指すのでしょうか? すみません。こちらの表現が悪かったです。 アップデート後に、2.2.0のデータを移行することです。
> 私も2.2.0から2.2.1にしましたが、単純にコピーペーストを行うだけだと思うのですが…… > http://www.gs.sjts.co.jp/v2/support/update_2.2.1.html > ここを見て実施されてますか? その通りに行っております。 今までにも何度もアップデートを行っておりますし、必ずtomcatを停止してから作業を行っております。
何度もやり直してみましたが、データの移行後に必ず施設予約に不具合が出るという状況でして...
投稿者ノルマンディー 最新書き込み2009/02/23 13:20:34
|
[ 1879 ] Re: OutOfMemoryError (Ver.2.2.1)
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; } -------------------------------------------------
投稿者snip 最新書き込み2009/02/25 09:16:08
|
[ 1880 ] Re: Re: OutOfMemoryError (Ver.2.2.1)
手軽なのは、__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; } -------------------------------------------------
投稿者snip 最新書き込み2009/02/25 09:16:48
|
[ 1881 ] Re: Re: OutOfMemoryError (Ver.2.2.1)
誤 confMin = confModel.getRacHourDiv(); <---(1)最初にこの部分がエラーなのでは?
正 RsvAdmConfModel confModel = confDao.select();<---(1)最初にこの部分がエラーなのでは?
に訂正です。
これでも完全に理解できているとは言えませんが、ソースを見る限りでは、エラーになると思います。 ただ、この場合エラーとしてNullDefaultExceptionがでてくると思うので、OutOfMemoryError のエラーでは説明が付かないのかとまだ疑問点は残ります。
投稿者snip 最新書き込み2009/02/25 09:25:59
|
[ 1882 ] Re: OutOfMemoryError (Ver.2.2.1)
問題が大きくなっていますが、 私が見る限りエラーの内容は単純です。
java.lang.OutOfMemoryError: Java heap space
とある様にメモリ不足となっているだけです。
確認事項として ・メモリ割当の設定が正常に行われているか ・他のアプリケーションがメモリを消費していないか
私の場合、別システムで使用していたDB(PostgreSQL)がメモリを消費していたため、 Tomcatがメモリ不足となっていたことがあります。
※DBの項目追加については下記のクラスで実行されているので、項目がなくてエラーになるということは ありえないと思います。
jp.groupsession.v2.convert.convert221.dao.ConvTableDao
投稿者HH 最新書き込み2009/02/25 10:00:02
|
[ 1884 ] Re: Re: OutOfMemoryError (Ver.2.2.1)
> ※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; } } ちょっと疑問です。
投稿者snip 最新書き込み2009/02/25 12:40:44
|
[ 1886 ] Re: OutOfMemoryError (Ver.2.2.1)
snipさん
確認しているパッケージが違います。
クラス名は「ConvTableDao」と同じですが、 パッケージ名が異なります。
こちらをご確認ください jp.groupsession.v2.convert.convert221.dao.ConvTableDao
投稿者HH 最新書き込み2009/02/25 13:06:38
|
[ 1888 ] Re: OutOfMemoryError (Ver.2.2.1)
弊社でも類似の現象が起こりました。
弊社内で起こった現象の原因も「java.lang.OutOfMemoryError: Java heap space」ですが、エラーが起こったクラスは異なるようです。 ただしトリガーとなる機能としては「施設予約」で同一です。
現象が回避できた対策からご報告しますと ・・・「施設予約」「管理者設定」内「施設予約基本設定」の設定値がいつの間にかnull(何も設定されていない)になっていたため、設定しなおした ところ正常動作するようになりました(設定値がないことで無限ループなどになり、ヒープ領域を使い果たしたと推測できます)。
この設定項目はラジオボタンであるため、通常の操作では未設定状態になることはありえないはずです。
何らかのプログラム不具合により設定値が失われた可能性が高いと思われますね。
投稿者GSユーザー 最新書き込み2009/02/25 14:48:41
|
[ 1889 ] Re: Re: OutOfMemoryError (Ver.2.2.1)
//施設予約 //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入れると直る可能性があるような・・・・・・・・・・。気がするだけですけど。(^^;; とりあえず、管理者設定をやり直すのも一つの手のような・・・・・・・・・・・・・・・・・・・・・・・・・・・・
投稿者snip 最新書き込み2009/02/25 15:04:55
|
[ 1890 ] Re: OutOfMemoryError (Ver.2.2.1)
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のデータを移行した段階で、施設予約でエラーが出てしまいます。 こちらも上記のメモリの割り当て作業を行っても状況は変わりませんでした。
投稿者ノルマンディー 最新書き込み2009/02/25 15:17:29
|
[ 1891 ] Re: Re: OutOfMemoryError (Ver.2.2.1)
GSユーザー様の書き込みにあったように、当方でも施設予約の管理設定を調べたら、施設予約基本設定が未選択になっていました。 任意のものに設定をしたところ、正常に動作するようになりました。
皆様、本当にありがとうございました。
投稿者ノルマンディー 最新書き込み2009/02/25 15:28:32
|