お詫び:データベースのサイズ増加について.

お詫び:データベースのサイズ増加について.

- Iseki Fumikazu の投稿
返信数: 5

今回は,お騒がせして申し訳ありません.m(__)m

データベースの増加につきまして,皆さんに責任があるような書き方をしてしまいました.

まだ,確定していませんが,十中八九以下の事が原因です.

ひとえに,私の技量が至らないせいであります.

ユーザの皆さんには,心よりお詫びいたします.

申し訳ありませんでした.m(__)m

 

----------------------

原因

1. リージョンサーバが時々ハングアップするので,自動的にこれを解消しようと考えました.
2. OpenSim が使用いている CPUタイムを見て,数分間CPUタイムが変化しない場合はハングアップと見なして強制的に再起動するスクリプトを作成しました.
3. 正常なSIMが数分於きに再起動.... 失敗.
4. チェックしている間,CPUが単に暇な場合もあるので,数分間CPUタイムが変化しない場合は,CPUを使う命令を発行することにしました.
5. 発行する命令は "show stats" (リージョンの統計情報を出力)
6. 統計情報を出力しても誰か見る訳でもないし,CPUもそんなに使わない....
7. 発行する命令を "generate map" に変更.CPUも使うし,マップの更新にもなる.一石二鳥!
8. ハングアップしたリージョンを手動で再起動する回数が減った.(なお,3/4のramu Island はCPUは使っているのにアクセスできない状態でした)
9. めでたし.めでたし.......

とここまでは良かったのですが,実はここに罠が. 罠が...... (;_;
データベースの assets テーブルを見たところ,リージョンのマップイメージの画像がその都度格納されており,しかも古いイメージ画像が削除されていません!!!!!

自爆状態です orz orz orz............

もしかして,assets テーブルって,どこからも参照されなくなったデータも保持しているのでしょうか?

Iseki Fumikazu への返信

assets テーブル

- Shinobar Martinek の投稿

> もしかして,assets テーブルって,どこからも参照されなくなったデータも保持しているのでしょうか?

以前から不思議に思っているのですが、持ち物って、削除しても削除してもゴミ箱の中に残りますよね。いちど作ったものは絶対に消さないという仕様なのかしら?

「どこからも参照されなくなった」ということを確認するのが大変だからと、いうことなのかなあ。

とすると、データーベースは増大するいっぽうということになりますね…。

Shinobar Martinek への返信

Re: assets テーブル

- Xpyoda Janus の投稿

OpenSimのWikiのドキュメントの中に、一度作成したアセットは、削除する機能は、いまのところ無い、みたいな記述があって、まえからずーーーーーーーっと、気になってます。削除する機能がないとデータベースは肥大化する一方じゃないの??? ...と。

ノートカードやオブジェクトを変更して、内容が同じだとしても、保存したら、中身は同じでも違うUUIDになりますし、スクリプトをコヒペしたら、内容は同じでも、コピペしただけ増加していくとおもうし、どうやってるんだろう....って、OpenSimを知り始めたときから、ずっと疑問に思い続けてます。なんらかのガベージコレクション機構がないと、そのうち破たんするんじゃないかと気になってました。

分散ネットワーク環境だと、「どこからも参照されなくなった」ことを確認するのは、労多くして実り少ないですし、参照カウンタなんかで、あちこちから参照されて、組み込まれてるオブジェクト(アセット)の寿命を管理なんで、まず不可能だろうし、一時期気になって調べたことはあります。
さすがに、なんも考えてないってことはないだろう...って。

一応、次のような記述はみつけましたが、

Feature Proposals/Deduplicating Asset Service
http://opensimulator.org/wiki/Feature_Proposals/Deduplicating_Asset_Service

[Opensim-dev] Proposal: Implement a de-duplicating core ROBUST asset service
http://opensimulator.org/pipermail/opensim-dev/2012-March/023366.html

現在のOpenSimサーバーが、実装しているのかは、よくわかりません。

#  メタバース環境にも、「滅び」が導入されなくてはならないのかしら?

Shinobar Martinek への返信

Re: assets テーブル

- yin chang (infrared Razor) の投稿
そういえば…

1)新規テクスチャをアップします
2)アップしたテクスチャのUUIDをメモします
3)そのテクスチャをdeleteします
4)インベントリのゴミ箱をからにします

で〜

5)先のUUIDを指定してテクスチャを貼ります

すると〜

6)誰も持っていないはずのテクスチャが貼れちゃいます

やっぱり…アセットサーバのデータベースは肥大する一方なんでしょうね〜
yin chang (infrared Razor) への返信

Re: assets テーブル

- Iseki Fumikazu の投稿

土地のテクスチャのイメージが10万行くらいありまして,結局どこからま参照されていないようですので.昨晩から今日にかけて assets テーブルから削除しました.(現在は55万行くらい)

もし,必要な場合でも,リージョンサーバを再起動するか,generate map コマンドを実行すれば,イメージがデータベースに格納されます.

MySQLのinnoDBエンジンだと,データを消してもファイルサイズは小さくならないのですが,たぶんダンプのバックアップは小さくなるはずです.

お騒がせしました.m(__)m

 

OpenSim では,リージョンは,起動して接続したときに一時的に regionsテーブルに追加され,接続が切れるとテーブルから削除されます.

従って,そもそもリージョン上のオブジェクトなどが参照されていないことを確定できないようです.

それでずうっとデータベースに残るのですね.

でも,土地のテクスチャをなんで一々データベース(assets)に格納するんだろう?

 

 

 

 

Iseki Fumikazu への返信

Re: assets テーブル

- Iseki Fumikazu の投稿

毎週月曜と木曜の未明にデータベースのフルバックアップを取っているのですが,今日のバックアップファイルのサイズ(圧縮済み)は約25Gでした.

前回は約57G.... どんだけ土地イメージデータが場所を取っていたんだ!!!