cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Apache Wiki <>
Subject [Cassandra Wiki] Update of "MemtableThresholds_JP" by yukim
Date Thu, 01 Apr 2010 13:31:54 GMT
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Cassandra Wiki" for change notification.

The "MemtableThresholds_JP" page has been changed by yukim.


  ## page was copied from MemtableThresholds
+ 書き込み操作を行うと、Cassandraはメモリ上の!ColumnFamilyのデータ構造であるMemtableに値を保存します。Memtableは設定された閾値を超えるとディスクへとフラッシュされます。利用可能なシステムメモリを有効活用し、メモリ不足でノードが落ちてしまわないよう、閾値の正しいチューニングを行うことは重要です。
- When performing write operations, Cassandra stores values to column-family
- specific, in-memory data structures called Memtables. These Memtables are
- flushed to disk whenever one of the configurable thresholds is exceeded.
- Proper tuning of these thresholds is important in making the most of 
- available system memory, without bringing the node down for lack of memory.
+ (bin/のデフォルト設定では、最大JVMヒープサイズは1GB(-Xmx1G)となっており、本番環境では少なすぎます。この値を増やすことも考慮すべきです。)
- (Note that by default bin/ specifies a maximum JVM heap of
- -Xmx1G, which is very low for production use.  Consider increasing this
- as well.)
+ == 閾値の設定 ==
+ Memtableは実際のカラムの値を保持しているので、挿入されたデータのサイズ分のメモリを最低でも消費します。しかしこのデータを索引付けするのに使用される構造に紐づいたオーバーヘッドも有ります。値のサイズに比べてカラム数と行数が多い場合、このオーバーヘッドは無視できないくらい顕著になります。(データそのものよりも大きいかもしれません。)
- == Configuring Thresholds ==
- Since Memtables are storing actual column values, they consume at least as
- much memory as the size of data inserted. However, there is also overhead 
- associated with the structures used to index this data. When the
- number of columns and rows is high compared to the size of values, this
- overhead can become quite significant, (possibly greater than the data
- itself).
+ 言い換えると、どの閾値を使うか、閾値にどんな値をセットするかは、どれくらいのメモリがあるかによってではなく、!ColumnFamilyがいくつあって、それぞれの!ColumnFamilyにいくつカラムがあるのか、そして保存されている値のサイズのによります。
- In other words, which threshold(s) to use, and what to set them to is
- not just a function of how much memory you have, but of how many column
- families, how many columns per column-family, and the size of values 
- being stored.
+ 以下に示しているのは、`sotrage-conf.xml`にある閾値に関する設定項目とその説明です。
- Listed below are the thresholds found in `storage-conf.xml`, along with a
- description.
  === MemtableSizeInMB ===
+ 名前が示す通り、この項目はMemtableがディスクにフラッシュされる前の最大のサイズをMB単位で設定します。挿入された値のサイズに対応します。(格納しているカラムのサイズがプラスされます。)
- As the name indicates, this sets the max size in megabytes that the 
- Memtable will store before triggering a threshold violation and causing
- it to be flushed to disk. It corresponds to the size of the values
- inserted, (plus the size of the containing column).
- If left unconfigured (missing from the config), this defaults to 128MB.
+ 設定されない場合(設定ファイルに記述がない場合)、デフォルトでは128MBです。
- ''Note: The value is applied on a per column-family basis.''
+ ''メモ: !ColumnFamily単位で設定されます。''
  === MemtableObjectCountInMillions ===
- This directive sets a threshold on the number of columns stored. 
+ この項目は保存されるカラム数の閾値を設定します。
+ 設定されない場合(設定ファイルに記述がない場合)、デフォルトで1(1,000,000オブジェクト)です。
- Left unconfigured (missing from the config), this defaults to 1 
- (or 1,000,000 objects).
- ''Note: The value is applied on a per column-family basis.''
+ ''メモ: !ColumnFamily単位で設定されます。''
+ == JConsoleを使用した閾値の最適化 ==
+ Cassandraの!ColumnFamily MBeanはいくつもの属性を持っています。最適な閾値を決めるための...。この機能にアクセスするひとつの方法はJConsoleを使用することです。JConsoleはグラフィカルなモニタリングと管理のためのアプリケーションで、JDKに含まれています。
- == Using Jconsole To Optimize Thresholds ==
- Cassandra's column-family mbeans have a number of attributes that can
- prove invaluable in determining optimal thresholds. One way to access
- this instrumentation is by using Jconsole, a graphical monitoring and
- management application that ships with your JDK.
+ JConsoleを引数なしで起動すると、"New Connection"ダイアログボックスが表示されます。JConsoleをCassandraが起動しているマシンと同じマシンで起動した場合、PIDを用いて接続することができます。その他の場合、リモートに接続する必要があります。デフォルトのCassandra起動スクリプトは以下のJVMオプションで、JavaVMにポート8080で受け付けるように設定します。
- Launching Jconsole with no arguments will display the "New Connection"
- dialog box. If you are running Jconsole on the same machine that 
- Cassandra is running on, then you can connect using the PID, otherwise
- you will need to connect remotely. The default startup scripts for
- Cassandra cause the VM to listen on port 8080 using the JVM option:
- The remote JMX url is then:
+ この場合、リモート接続用のJMX URLは以下のようになります。
- This is used internally by:
+ これは以下のツールで内部的に使用されています。
  bin/nodetool src/java/org/apache/cassandra/tools/
+ 接続して''MBeans''タブを選択し、''org.apache.cassandra.db''セクションを展開すると、定義した!ColumnFamilyが見えるはずです。
+ そこには3つの注目スべき属性があります。
- Once connected, select the ''MBeans'' tab, expand the 
- ''org.apache.cassandra.db'' section, and finally one of your column families.
- There are three interesting attributes here.
+  1. ''!MemtableColumnsCount'' このテーブルのカラムの総数を表します。100個のカラムを持つ100行のデータを保持すると、この値は10,000になります。この属性は[[#MemtableObjectCountInMillions|MemtableObjectCountInMillions]]の閾値を設定するのに役立ちます。
+  1. ''!MemtableDataSize'' 保存されているデータのトータルサイズを決定します。これはすべての保存されている値の和で、Memtableのオーバーヘッドは計上していません。(つまり、Memtableが実際にどれだけメモリを使用しているかは示しません。)
+  1. ''!MemtableSwitchCount'' !ColumnFamilyがMemtableをディスクにフラッシュした際にカウントアップされます。
+ ''ノート: 値を反映させるためには`Refresh`ボタンを押す必要があります。''
-  1. ''!MemtableColumnsCount'', representing the total number of column entries in this table.
If you store 100 rows that each have 100 columns, expect to see this value increase by 10,000.
This attribute is useful in setting the [[#MemtableObjectCountInMillions|MemtableObjectCountInMillions]]
-  1. ''!MemtableDataSize'', which is used to determine the total size of stored data. This
is the sum of all the values stored and does not account for Memtable overhead, (i.e. it's
not indicative of the actual memory used by the Memtable). Use this value when adjusting [[#MemtableSizeInMB|MemtableSizeInMB]].
-  1. Finally there is ''!MemtableSwitchCount'' which increases by one each time a column
family flushes its Memtable to disk.
- ''Note: You'll need to manually mash the `Refresh` button to update these values.''
- It is also possible to schedule an immediate flush using the `forceFlush()` operation.
+ `forceFlush()`を使用して、即時フラッシュをスケジュールすることも可能です。

View raw message