状況リスト
"stat"コマンドを使ってROMAの状態をチェックすることができます。
stat <regexp>\r\n
Ex.)
$ telnet ${HOST1} ${PORT1}
> stat
version 1.3.0
config.DEFAULT_LOST_ACTION auto_assign
config.LOG_SHIFT_AGE 10
config.LOG_SHIFT_SIZE 10485760
.
.
.
END
> stat DEFAULT_LOST_ACTION
config.DEFAULT_LOST_ACTION auto_assign
END
statコマンドの詳細については、コマンド ページ を参照してください。
設定
これらの項目は設定ファイルの中で読み込まれたパラメータを表示します。
名前 | 解説 |
---|---|
config.DEFAULT_LOST_ACTION |
DEFAULT_LOST_ACTION はROMAがサーバのトラブルでデータを失った場合のデフォルトのアクションを指定します。 no_action: ROMA は失ったデータへのアクセスを拒否します。 auto_assign: ROMAは失ったデータが存在していないかのようにデータにアクセスします。 shutdown: ROMAはデータが失われたならばシャットダウンするでしょう。 |
config.LOG_SHIFT_AGE | ローテートするログファイルの数を指定します。 |
config.LOG_SHIFT_SIZE |
ログファイルのサイズ(バイト)を指定します。 ログファイルがこのサイズに到達すると、次のファイルへローテートするでしょう。 |
config.LOG_PATH |
ROMA がログファイルを作成するディレクトリを指定します。 デフォルトのディレクトリは現在のディレクトリです。 |
config.RTTABLE_PATH |
ROMAがルーティング情報ファイルを取り出すディレクトリを指定します。 デフォルトのディレクトリは現在のディレクトリです。 |
config.STORAGE_DELMARK_EXPTIME |
削除された値がGCによって収集される間隔(秒)を指定します。 デフォルトは5日です。 |
config.STORAGE_EXCEPTION_ACTION |
ストレージが例外エラーに遭遇した時にROMAが取る動作を選択します。 no_action : エラーインスタンスは動作し続けます。 shutdown : エラーインスタンスはシャットダウンされるでしょう。 |
config.DATACOPY_STREAM_COPY_WAIT_PARAM | ノード間でデータをゆっくりコピーするための待ち時間(秒)を指定します。 |
config.PLUGIN_FILES | ROMAプロセスが開始する時に読み込まれるプラグインを指定します。 |
config.WRITEBEHIND_PATH |
ROMAが非同期にイベントログファイルを作成するディレクトリを指定します。 デフォルトのディレクトリは "./wb" ディレクトリです。 |
config.WRITEBEHIND_SHIFT_SIZE |
イベントログファイルのサイズ(バイト)を指定します。 ログファイルがこのサイズに到達すると、ログファイルは次のファイルにローテートされます。 デフォルトのサイズは10MBです。 |
config.CONNECTION_DESCRIPTOR_TABLE_SIZE |
ROMAがepoll システムコール(デフォルトの設定)を利用する時のファイルディスクリプタの最大数を指定します。 この値はOSの設定よりも小さくなければなりません。 (シェルコマンド(`ulimit -n`)を使ってFDを調べることができます)。 |
状態
これらの項目はROMAの基本的な状態を表示します。
名前 | 解説 |
---|---|
stats.config_path |
設定ファイルのパス。 ROMAが起動する時に参照されます。 |
stats.address | 参照するROMAサーバのアドレス |
stats.port | 参照するROMAのポート。 |
stats.daemon | デーモンモードで起動。 |
stats.name |
ROMAの名前。 デフォルトは”ROMA”です。 |
stats.verbose |
詳細ログモード。 デバッグログモードより多くの情報を出力します。 |
stats.enabled_repetition_host_in_routing |
このオプションを使って一つのサーバの中でROMAを起動することができます。 このオプションが無いと、データの冗長性は複数のサーバ内で保持します。 |
stats.run_recover | 回復プロセスが実行中かそうでないか。 |
stats.run_sync_routing | Sync_routing プロセスが実行中かそうでないか。 |
stats.run_iterate_storage | Iterate_storage プロセスが実行中かそうでないか。 |
stats.run_storage_clean_up |
Storage_clean_up プロセスが実行中かそうでないか。 このプロセスはdelフラグを持つデータのための物理的なデータ削除を実行します。 |
stats.run_receive_a_vnode | Instance がvnodeを持っているかそうでないか。 |
stats.run_release |
Release プロセスが実行中かそうでないか。 このプロセスは全ての1次 & 2次ノードを解放します。 ですのでこのプロセスの後で、このインスタンスはデータを持ちません。 |
stats.run_join | Join プロセスが実行中かそうでないか。 |
stats.run_balance | Balance プロセスが実行中かそうでないか。 |
stats.gui_run_snapshot | Snapshot プロセスが実行中かそうでないか。 |
stats.last_clean_up | ストレージのクリーンアップの最後の実行の日付。 |
stats.gui_last_snapshot | スナップショットの実行の最後の日付。 |
stats.spushv_protection |
trueの場合は、このインスタンスはspushvコマンドを拒否します。 (pushv プロセスはノード間でデータを交換します。 例) recover, join, release) |
stats.stream_copy_wait_param | ノード間でデータをゆっくりコピーするための待ち時間(秒)を指定します。 |
stats.stream_show_wait_param | 収集したログデータを10行ごとに表示するために待つ時間(秒数)を指定します。 |
stats.dcnice |
"dcnice" コマンドはデータコピースレッドのための優先度を設定します。 1のniceness は一番優先度が高く、5は一番低い優先度です。 when n ==1 # highest priority stream_copy_wait_param = 0.001 each_vn_dump_sleep = 0.001 each_vn_dump_sleep_count = 1000 when n == 2 stream_copy_wait_param = 0.005 each_vn_dump_sleep = 0.005 each_vn_dump_sleep_count = 100 when n == 3 # default priority stream_copy_wait_param = 0.01 each_vn_dump_sleep = 0.001 each_vn_dump_sleep_count = 10 when n == 4 stream_copy_wait_param = 0.01 each_vn_dump_sleep = 0.005 each_vn_dump_sleep_count = 10 when n == 5 # lowest priority stream_copy_wait_param = 0.01 each_vn_dump_sleep = 0.01 each_vn_dump_sleep_count = 10 |
stats.clean_up_interval |
クリーンアップを実行する時間間隔(秒)を指定します。 クリーンアッププロセスはdelフラグを持つデータを削除します。 |
stats.size_of_zredundant |
データの最大サイズ(バイト)を指定します。 冗長性のためにデータが他のノードに転送される間、このサイズを超えたデータは転送される前に圧縮されます。 デフォルトのデータサイズは0です。 値が0であれば、データは圧縮されません。 |
stats.write_count | このインスタンスの総書き込み回数。 |
stats.read_count | このインスタンスの総読み込み回数。 |
stats.delete_count | このインスタンスの総削除カウント(論理削除)。 |
stats.out_count | 1次ノードとしてのこのインスタンスの総削除カウント(論理削除)。 |
stats.out_message_count | 2次ノードとしてのこのインスタンスの総削除カウント(論理削除)。 |
stats.redundant_count |
取得 [rset|rzset] コマンドのカウント。 これらのコマンドは1次ノードのインスタンスから2次ノードのインスタンスへ送信されます。 |
stats.hilatency_warn_time | コマンドの実行時間の通常の制限を決定するための時間(秒数)を指定します。この設定病数を超える操作があると、エラーログが出力されます。 |
stats.wb_command_map |
遅延書き込み関数の目的のコマンドのリスト 例) {:get=>1, :set=>2} |
stats.latency_log | レイテンシのチェックが動作しているかどうか。 |
stats.latency_check_cmd | レイテンシのチェックの目的のコマンド。 |
stats.latency_check_time_count | レンテンシの平均を計算するための間隔を指定します。 |
stats.spushv_klength_warn |
キーの長さの制限サイズを指定します。 目的のキーサイズがこの設定を超えた場合、警告ログが出力されるでしょう。 vnodeコピーの間 (例 recover, join) |
stats.spushv_vlength_warn |
値の長さの制限のサイズを指定します。 目的の値のサイズがこの設定を超えた場合、警告ログが出力されるでしょう。 vnodeコピーの間 (例 recover, join) |
stats.spushv_read_timeout |
spushvコマンドを使ってタイムアウト時間の係数を指定する。 Timeout time = (handler.timeout * spushv_read_timeout) デフォルトのタイムアウト時間は 1000(秒)。10 * 100 = 1000 |
stats.reqpushv_timeout_count |
vnodeのタイムアウト時間の係数を指定する。 最後のリクエストが終了するか、タイムアウト時間が過ぎると、次のリクエストが送信されます。 タイムアウト時間は (0.1 * reqpushv_timeout_count) です。 (pushv プロセスはノード間のデータを交換します。 例) recover, join, release) |
stats.routing_trans_timeout |
ルーティング変更の処理時間を指定する。 この設定時間を越えると、ルーティングが戻されるでしょう。 |
stats.log_shift_size |
ログファイルのサイズ(バイト)を指定します。 ログファイルがこのサイズに到達すると、次のファイルへローテートするでしょう。 |
stats.log_shift_age | ローテートするログファイルの数を指定します。 |
stats.log_level |
ログのレベルを指定する。 [ debug | error | warn | info ] を選択することができます。 |
ストレージ
ストレージエンジンとしてTokyoCabinetを選択すると、statsコマンドはストレージ情報の詳細を表示することができます。
名前 | 解説 |
---|---|
storages[hashname].storage.storage_path |
ROMAがストレージファイルを作成するディレクトリを指定します。 ROMAがファイルベースのストレージ実装を選択する場合に必要です。 デフォルトのディレクトリは現在のディレクトリです。 |
storages[hashname].storage.st_class |
ストレージタイプを指定する。 RubyHashStorage : RubyHash(OS メモリ) TCStorage : TokyoCabinet GroongaStorage : groonga SQLite3Storage : SQLite |
storages[hashname].storage.divnum | ROMAプロセスのストレージを分割する数を指定します。 |
storages[hashname].storage.option |
bnum : tcファイルの最初の行にあるキーをカウントします。 基本的に変更はされません。 xmsiz : 各tcファイルで使うメモリ使用率。 データサイズがこの値を超えると、ディスクアクセスが起きるでしょう。 opts : l => 巨大なファイル(2GB超)のサポート d => bzip 圧縮。tcファイルのサイズが減ります。 dfunit : Unit of defrag. 基本的に変更はされません。 |
storages[hashname].storage.each_vn_dump_sleep |
vnode_dump operation, non-target vnode がスキップされた場合。 しかしこの場合、sleep無しのスキップはストレージアクセスの圧力が増えます。 一方で、各回にsleepありのスキップはプロセスの圧力が増えます。 ですので、ROMAはこの設定を使ってv-nodeのdump操作の間にsleepの時間を指定します。 |
storages[hashname].storage.each_vn_dump_sleep_count |
vnode_dump operation, non-target vnode がスキップされた場合。 しかしこの場合、sleep無しのスキップはストレージアクセスの圧力が増えます。 一方で、各回にsleepありのスキップはプロセスの圧力が増えます。 ですので、ROMAはこの設定を使ってv-nodeのdump操作の間のsleepの実行間隔を指定します。 |
storages[hashname].storage.each_clean_up_sleep |
クリーンアップの実行時に各キーのsleepの時間を指定します。 つまり、clean_upプロセスは ([storage.each_clean_up_sleep] * Key 数) 秒以上の時間が掛かります。 |
storages[hashname].storage.logic_clock_expire |
ROMAのデータは日付データ&論理クロックを持っています。 しかし、日付データ & 論理クロックの間に幾らか差分がでることがあります。 この設定はどのデータが正しいか推測するための時間ラグを指定します。 |
storages[hashname].storage.safecopy_stats | スナップショット プロセスの TC ファイルの状態。 |
storages[hashname].storage[n].path | n番目のストレージファイルの絶対パス。 |
storages[hashname].storage[n].rnum | n番目のストレージファイルが保持するキーの数(削除の印が付けられたキーも含む。) |
storages[hashname].storage[n].fsiz | n番目のストレージファイルのファイルサイズ(バイト)。 |
遅延書き込み
これらの項目は遅延書き込み機能の設定を表示します。
名前 | 解説 |
---|---|
write-behind.path | 遅延書き込みプロセスの絶対パス。( config.rb の WRITEBEHIND_PATH と同じ) |
write-behind.shift_size |
ログファイルのサイズ(バイト)を指定します ログファイルがこのサイズに到達すると、次のファイルへローテートするでしょう。 |
write-behind.do_write |
Write-Behind 機能が動作しているかどうか。 Write-behind 関数は目的のコマンドの履歴を保持します。 例) 実行時間、値、など... |
write-behind.run_replication |
Cluster Replicaion(Hot Standby) process going or not. |
write-behind.run_existing_data_replication | クラスタ リプリケーション処理は、既存のデータをメインからレプリカクラスタにリプリケートします。 |
write-behind.replica_mklhash |
レプリカクラスタ構造のハッシュ値 もしレプリカクラスタの構造が変更される場合は、この値も変更されるでしょう。 |
write-behind.replica_nodelist | レプリカクラスタのノードリスト。 |
ルーティング
これらの項目はROMAのルーティング情報(クラスタ構造)を表示します。
名前 | 解説 |
---|---|
routing.redundant | 同じグループのノードの冗長性。 |
routing.nodes.length | グループ内のノードの数。 |
routing.nodes | ROMAのノードリスト。 |
routing.dgst_bits |
ダイジェスト ビットの数。 各ノードはユニークなハッシュ値(SHA1)を持ちます。 基本的にSHA1は160ビットのダイジェストを生成します。 しかし、CあるいはJavaで開発されたクライアントソフトによってそれを使うことは難しいです。 ですので、ROMAはこの設定を使ってダイジェストビットの数を減らします。 デフォルトは32ビットです。 |
routing.div_bits |
vnodeの数を指定します。 vnodes count = (2**x) |
routing.vnodes.length | グループ内のバケットの数 ( バーチャルノード )。 |
routing.primary | このインスタンスが持つプライマリノードの数。 |
routing.secondary | このインスタンスが持つセカンダリノードの数。 |
routing.short_vnodes |
short vnode の数。 short vnodeは冗長性を破壊するノードです。 ですので、この値は一般的に0であるべきです。 |
routing.lost_vnodes |
紛失したノードの数。 このノードのデータは紛失され、ROMAはアクセスすることができません。 ですので、この値は一般的に0であるべきです。 |
routing.fail_cnt_threshold |
フェイルオーバーを判定するための数。 ROMAが連続してこの数だけhealthチェックに失敗した場合、ROMAはフェイルオーバーを実行するでしょう。 |
routing.fail_cnt_gap |
時間(秒)を指定します。 ROMAがROUTING_FAIL_CNT_GAP 経過時間の間ルーティング情報の取得に失敗した場合、ROMAはフェイルオーバーのカウンターのカウントアップをします。 |
routing.sub_nid |
ROMAは自身のルーティングを一時的に変換することができます。 この値はルーティングの変換パターンです。 パターンは以下の通りです
{"Target Net Mask"=>{:regexp=>"substitution target IP", :replace=>"substitution pattern" }} 例) {"127.0.0.0/24"=>{ :regexp=>"127.0.0.1", :replace=>"127.0.0.2" }} |
routing.lost_action |
DEFAULT_LOST_ACTION はROMAがサーバトラブルによってデータを失った時のデフォルトの動作を指定します。 no_action : ROMA は失ったデータへのアクセスを拒否します。 auto_assign : ROMA は失ったデータが存在していないかのようにデータにアクセスすることができます。 shutdown : ROMAはデータが失われたならばシャットダウンするでしょう。 |
routing.auto_recover | trueの場合は、ROMAは短いvnodeが起動した時にリカバーを実行するでしょう。 |
routing.auto_recover_time | short vnodeが起きた後で自動回復を実行するまで待つ時間を指定します。 |
routing.auto_recover_status |
waiting : 何もしません(デフォルト) preparing : リカバーを実行します(auto_recover_timeに関係します) executing : リカバーを実行します。 |
routing.event | イベント(ノードのダウンと結合)のリスト。 |
routing.event_limit_line | どれだけの数のイベントが格納されるかを指定します。 |
routing.version_of_nodes |
各ノードのROMAのバージョン。 全ての数字が同じであれば、全てのインスタンが同じバージョンのROMAを使います。 そうでなければ、幾つかのインスタンスが間違ったバージョンを使います。 |
routing.min_version | ROMAクラスタ内のもっとも古いバージョンのインスタンス。 |
Connection
これらの項目はROMAの接続ステータスを表示します。
名前 | 解説 |
---|---|
connection.count | イベントマシーンの接続数。 |
connection.descriptor_table_size |
FD(ファイルディスクリプタ)の最大数を指定します。 このパラメータはROMAがepollシステムコールを使う時に必要とされます。 ("CONNECTION_USE_EPOLL"によってROMAがepollシステムを使うかどうかを調べることができます この値はOSの設定よりも小さくなければなりません。 |
connection.continuous_limit |
接続の上限を指定します。 コロンで区切られた3つの値 "start:rate:full"を指定します。 (例'200(conns):30(%):300(conns)). start : 接続がこの値に近づくと、ROMAは"rate/100"の確率で使用していない接続を切断するでしょう。 full : 使用している接続の数が"full"に近づくと、ROMAは100%の確率で使用していない接続を切断するでしょう。 |
connection.accepted_connection_expire_time |
時間(秒)を指定します。 ROMAが受信した接続が CONNECTION_EXPTIME 秒使われていない場合、ROMAはこの接続を切断するでしょう。 値が0の場合、ROMAは切断しないでしょう。 |
connection.handler_instance_count | 現在の接続数。 |
connection.pool_maxlength | 非同期接続の接続プールが維持する最大の接続の数を指定します。 |
connection.pool_expire_time |
時間(秒)を指定します。 ROMAが非同期接続の接続プールを使う場合、 ROMAは接続がプールに戻されてから CONNECTION_POOL_EXPTIME 秒の間使われていない接続を切断するでしょう。 このパラメータはCONNECTION_EXPTIME パラメータより小さい必要があります。 |
connection.EMpool_maxlength |
同期接続のコネクションプールが維持するイベントマシーンの最大数を指定します。 非同期接続の数はクライアントアクセスの通信量に依存します。 推奨値はROMAクライアントプール設定の数とほぼ同じで、大まかな指針としては10から15です。 (EM は EventMachine) |
connection.EMpool_expire_time |
時間(秒)を指定します。 ROMAが同期接続のコネクションプールを利用する場合、 ROMAは接続がプールに戻されてから CONNECTION_EMPOOL_EXPTIME 秒の間使われていない接続を切断するでしょう。 このパラメータはCONNECTION_EXPTIME パラメータより小さい必要があります。 (EM は EventMachine) |
その他
名前 | 解説 |
---|---|
バージョン | ROMAのバージョン |
dns_caching |
dns キャッシュ機能が使われているかどうか。 dns 情報はキャッシュとして各インスタンス内で保持されます。 |