ホーム > タグ > ZeroC ICE

ZeroC ICE

Ice.MessageSizeMaxの変更とか

Mumbleサーバの設定のお話です。

ICEインターフェイスを使っていてサーバの規模が大きくなってくると、ICEを使ってやりとりするデータの量が増えて来てクライアント側でMemoryLimitExceptionという例外が発生することがあります。

そういった場合の対処方法を紹介します。

具体的な事例としてはICEインターフェイスからチャンネルツリーを取得してサーバの接続者を表示するときやサーバのログを表示するときなどにこの例外が発生します。

クライアント側の設定

MumbleクライアントではなくICEのクライアント側の設定です。

PHPを使ったWEBインターフェイスの場合はphp.iniを編集しましょう。

ice.options="--Ice.MessageSizeMax=65535"

恐らくは、これが設定されていないためにデフォルト値の1024(1MB)が適用されてMemoryLimitExceptionがでるっぽいですね。

サーバ側の設定

クライアント側を設定してもだめな場合はサーバ側の設定を編集します。

murmur.ini を編集します。

Ice.MessageSizeMax=65535

単位は1KBです。

KB単位なのでわかりにくいですが、64MBなのでこれ以上あげるのはおすすめできません。

一度に送信、もしくは受信するデータの量が64MBということなのでかなり大きめに設定されていることがわかります。

あと、この値は特別な理由が無ければ変更しないようにmumbleの開発者は言っています。

参考

ZeroC ICE 公式ドキュメント
http://www.zeroc.com/doc/Ice-3.4.1-IceTouch/manual/PropRef.50.11.html#51122

Mumble鯖を1.2.3に更新

無事に家のサーバのメンテナンスを早朝にすることが出来ました。

今度は本当に朝だったよ。この前みたいに正午じゃないよ。

メモ書き

更新で手間取ったことがあったのでメモ書きです。

Debian/Ubuntuのiceパッケージのバグらしいので他のOSなら問題ないはず。

前の記事でphp言語の場合のおはなしをチラッとしたのですがpython言語の場合のお話。

/usr/share/slice/Murmur.ice:9: error: Can't open include file "Ice/SliceChecksumDict.ice"

というエラーが出てしまいます。

影響を受けるプログラムはwithgodさんが作成されたmumble munin plugin やらmurmurclとかpython言語で実装されている奴ですね。

Ice.loadSlice('/usr/share/slice/Murmur.ice')

のようになっている部分を次のように変更すれば動きます。

Ice.loadSlice( '', ['-I/usr/share/Ice/slice/', '/usr/share/slice/Murmur.ice'])

Ice/SliceChecksumDict.iceが他の場所にあるなら、その場所を指定してあげてください。

CentOSにおけるMurmur監視

最近TeamSpeak3ネタが多いのでMumbleネタです。

CentOSでMurmur(Mumbleのサーバ)を動かしている人向けの記事です。

Murmur向けにサーバ監視ツールMunin用のプラグインがいくつか公開されています。

Murmurの設定

OSに限らずiceを使うようにMurmurの設定をする必要があります。

murmur.ini のiceキーを設定します。

#ice="・・・

というようにコメントアウトされているので#を消して有効にします。

ice="・・・

関連ライブラリのインストール

全文を読む

Ubuntu 10.04 LTS リリース

ArcencielServer(うちで運用しているサーバの名前)に使っているOSの最新版である Ubuntu Server 10.04 LTS (64-bit) が先日リリースされました。

ということで早速入れ替えました。

今のところ大した違いは見られませんね(ぇ

ShockVoiceは・・・

面白うそうだと思ってサーバ建てていたボイスチャットソフトのShockoVoiceもTeamSpeak3の登場で私の中では完全に要らない子に・・・

多少の問題をはらみつつもTeamSpeak3が順調なので,サーバアップグレードを期にShockVoicenoサーバの公開をやめました。

Ubuntu 10.04 Server の変更点

Mumble に関連しそうな変更点のメモを

今のところは、mumble-server パッケージ(mumbleサーバ)は最新版の1.2.2が公式パッケージとして含まれているので1.2.3が出るまでは何も考えずに

sudo aptitude install mumble-server

と打てばインストールされるみたいです。

mumble-server-web パッケージを利用する場合は次のコマンドを使ってsliceファイルへのリンクを作っておかないとWebインターフェイスが正常に動作しないみたいです。

sudo ln -s /usr/share/Ice-3.3.1/slice/Ice /usr/share/slice/
sudo ln -s /usr/share/Ice-3.3.1/slice/Glacier2 /usr/share/slice/

サーバのスペック

興味のある人向けに・・・

M/B + CPU D945GCLF2
メインメモリ DDR2-800 2G * 1
補助記憶(HDD)

ZERO-SD100S

microSDHCカード 8GB (Class4)
電源

PICO-PSU90

メーカ不詳のACアダプタ
ケース K45 の ケース
NIC LGY-PCI-GT

まぁ、静音+省電力を主眼に作っているのでスペック的にあれですが,ボイスチャットサーバで200人程度のアクセスを裁くにはオーバースペック気味.

Mumble サーバのメンテ方法2

前回の記事でデータベースファイル全体のメンテナンス方法を紹介しました。

今回は中身のメンテナンスです。

1月以上ログインしていないユーザを削除

なんとなくユーザ登録したけど使われない、証明書をなくしてユーザ登録した名前でログインできない、といったユーザは多いです。

なので、公開サーバとか開いていると謎のユーザが増える一方になります。

具体的な方法ですが、sqlite3 を使ってデータベースを直接編集します。

$ sqlite3 mumble-server.sqlite

ICEインターフェイスやD-Busインターフェイスでユーザの最終ログイン時間を取得できないため、直接データベースファイルを編集する必要があります。(Murmur 1.2.3 からは取得できるようになります。)

一ヶ月以上ログインしていないユーザを一覧表示する。

> select server_id, user_id, name, last_active from users
  where last_active < datetime('now', 'localtime', '-1 months')
         and user_id <> 0;

いきなり削除するのもあれなので、まずは確認します。

確認したらそれを削除する。

> delete from users where last_active < 
  datetime('now', 'localtime', '-1 months')
  and user_id <> 0;

このような感じでクエリを送ると長期間ログインしていないユーザや、その削除ができます。

last_active < datetime(‘now’, ‘localtime’, ‘-1 months’)

この部分は英語的な意味から察することができると思いますが、-1 months を -1 week とか -1 days に変えれば月単位以外でもいけます。

user_id <> 0

こいつはユーザIDが0のユーザを除外する(SuperUserは削除対象にしない)という意図です。

詳しい部分が知りたければSQL文とかでググるといいでしょう。

ユーザ削除の後に前回の記事で紹介したreindexやvacuumをすると効率的かもしれない。

Home > タグ > ZeroC ICE

検索
フィード
メタ情報

Return to page top