フォーラム

GroupSession

フォーラム
GroupSessionについての自由な情報交換の場としてご利用ください

GroupSessionフォーラム:投稿一覧

 
フォーラム:01_リクエスト・要望
DBの最適化
[ 5461 ] DBの最適化

お世話になってます。
弊社でGSを使用して、かれこれ4年になります。DBのサイズが大きいので最適化をしようと試みております。基本的には1:コマンドラインからDBのバックアップをとる 2:H2コンソールから”DROP ALL OBJECTS DELETE FILES;”を実行する。3:残った残骸を削除する rm -rm gs2db/gs2db*
4:コマンドラインからリストアする  とgs2db.h2.dbが半分のサイズになりますが、
Exception in thread "main" org.h2.jdbc.JdbcSQLException: 関数の別名 "FTL_CREATE_INDEX" はすでに存在します が発生し、最後まで完了しません。
このあたり改善していただけると有りがたいです。宜しくお願い致します。
環境:
OS:Debian7.0(Wheezy) 64bit java version "1.7.0_25"
Tom:7
物理メモリ:4GB
ヒープ:JAVA_OPTS="-Xms2816M -Xmx2816M -XX:PermSize=256M -XX:MaxPermSize=256M -Xss1024K -XX:NewSize=1024M -XX:MaxNewSize=1024M -XX:NewRatio=2 -XX:SurvivorRatio=4 -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseParNewGC -XX:ParallelGCThreads=4 -XX:MaxTenuringThreshold=32 -XX:TargetSurvivorRatio=80 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8010 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dorg.apache.catalina.security.SecurityListener.UMASK=`umask`"
DBオプション:LOCK_MODE=3
LOCK_TIMEOUT=5000
DEFAULT_LOCK_TIMEOUT=5000
MULTI_THREADED=0
IFEXISTS=TRUE
AUTOCOMMIT=OFF
DB_CLOSE_ON_EXIT=FALSE
CACHE_SIZE=512000
PAGE_SIZE=1024
MAX_LENGTH_INPLACE_LOB=10240
CACHE_TYPE=SOFT_LRU
MVCC=TRUE
MAX_QUERY_TIMEOUT=36000
MAX_COMPACT_TIME=9900
MAX_MEMORY_ROWS_DISTINCT=90000
LARGE_RESULT_BUFFER_SIZE=12800
DEFRAG_ALWAYS=FALSE
MAX_LOG_SIZE=1
TRACE_MAX_FILE_SIZE=1
TRACE_LEVEL_SYSTEM_OUT=1

投稿者証券SE
最新書き込み2013/06/28 12:59:33
[ 5462 ] Re: DBの最適化

スペック書き忘れ
H2DBのjar(手動で入替):h2-1.3.170.jar
Tomは問題なく起動しているので、大丈夫っぽい。

投稿者証券SE
最新書き込み2013/06/28 13:23:38
[ 5463 ] Re: DBの最適化

H2のバックアップもしくはリストアの問題ですね。

H2のメーリングリストで報告された方が良いと思います。

投稿者Geo
最新書き込み2013/06/28 13:42:45
[ 5464 ] Re: Re: DBの最適化

> H2のバックアップもしくはリストアの問題ですね。
>
> H2のメーリングリストで報告された方が良いと思います。

なるほど。
一応Googleの方は目を通しました(英語版)DBサイズの縮小はSHUTDOWN COMPACTでも
ダメなようで、バックアップしてオブジェクトを全部削除し、リストア(リカバリー)させることでサイズが
小さくなるようです。で、GSの場合新たに追加されたWEBメール用のindex作成処理が原因でExceptionしているようです。H2のメーリングリストに投稿するとjavaプログラム本体の方に手を
加える必要がありそうな回答が予想されるので、メーリングリストへの投稿は今のところ考えていません。

投稿者証券SE
最新書き込み2013/06/28 14:02:00
[ 5465 ] Re: Re: Re: DBの最適化

Geo様が開発の方かどうかは分かりませんが、つれないお返事ありがとうございました。
以下の内容は弊社での環境なので「参考になるorならない」はそれぞれでご判断下さい。
***最適化の話**********************************
ながーく運用しているとDBが肥大化してくると思います。昨日まで大丈夫だったけど。。なんか今日は重いなぁというケースは最適化で改善するかもしれません。
***私がやったこと*********************************
1:H2DBのjarを手動で入替る(gsession/WEB_INF/lib/の直下にあるjarファイルを入替る)Tomcatを停止して作業すること。h2-1.3.172.jar(7月1日現在1.3系の最新版)
2:H2DBをサーバモードで起動する(サーバ側作業)
java -Xms2048M -Xmx2048M -cp /var/tomcat/webapps/gsession/WEB-INF/lib/h2-1.3.172.jar org.h2.tools.Server(ヒープの設定は個人環境のフィジカルメモリによる)
3:ブラウザでH2DBコンソールを起動する(クライアントPCでOK)
例:http://[host名]:8082/ 接続方法はサポートページにあったかな??
4:右側のSQL入力用の窓で SHUTDOWN DEFRAG; を実行する(クライアントPC側だよ)
(ブラウザに~すでにDBが停止している~見たいな赤文字が出れば完了)
5:サーバ側の2番のプロセスを終了する
6:再度2番の作業をする(H2DBをサーバモードで立ち上げ)
7:3番の作業をする
8:右側のSQL入力用の窓で SHUTDOWN COMPACT; を実行する(クライアントPC側だよ)
(ブラウザに~すでにDBが停止している~見たいな赤文字が出れば完了)
9:サーバ側のH2DBのプロセスを終了する
10:とりあえずどの程度コンパクトになったか確認する(任意)
gsession/WEB-INF/db/gs2db/gs2db.h2.dbのサイズ
※DEFRAGだけだとdbのサイズは肥大化します。
※上記を実行する前に必ず gsession/WEB-INF/db をどこかにコピーした方が無難です
  (手動バックアップ)。
※Googleで外人さんがミューラ氏に質問してる方法だとGroupSessionでは100%コケます
(ScriptしてObject削除してRunScriptする方法)。
※弊社のGS運用ではショートメール主体なので、indexを追加した方が速度が向上しました。
  ただし検索オプションを送信者にして送信者を2人以上にして検索実行するとコケます 
  (QueryTimeOut indexがうまく働いてない?EXPLAINして要調査)。
※DBの設定のCACHE_SIZEをちょっと大きめに設定
※DBの終了時に自動でSHUTDOWN COMPACTが実行されるので、connectOption.propertiesにMAX_COMPACT_TIMEを設定する(任意)。
※GSessionのバックアップ設定で実行される処理はCPUが1つしか使われないので効率がよくない
 (1CPU-4COREの1つしか使用していない)。圧縮率や効率重視のため別にバッチを書いた。また2台構成や外付けHDD/別ディレクトリを構成可能な場合は該当のファイルをRsyncした方が早い。

考察:デフラグ&コンパクト化の箇所はバッチにした方がいいですな。

少しでもGsession無料ユーザの助けになればうれしいです。でも自己責任でどうぞ。
以上人柱でした。

投稿者証券SE
最新書き込み2013/07/01 12:38:14
スレッドURLhttps://groupsession.jp/wbs/bulletin/bbs080.do?bbs010forumSid=2&threadSid=1853
 


TOP