クラスターのパフォーマンス特性を理解する

クラスターのパフォーマンス特性を理解することは、問題の診断とキャパシティ・プランニングに不可欠です。

クラスターのパフォーマンス特性を理解することは、問題の診断とキャパシティ・プランニングに不可欠です。

DataStax Enterpriseは、Java Management Extensions(JMX)を介して、多数の統計と管理操作を公開しています。JMXは、Javaアプリケーションおよびサービスを管理および監視するツールを提供するJavaテクノロジーです。JavaアプリケーションがMBeanとして公開した統計情報または操作はすべて、JMXを使用して監視したり、制御したりすることができます。

JMXは、Javaアプリケーションおよびサービスを管理および監視するツールを提供するJavaテクノロジーです。JavaアプリケーションがMBeanとして公開した統計情報または操作はすべて、JMXを使用して監視したり、制御したりすることができます。

通常の運用では、データベースは、以下のようなJMX対応ツールを使用して監視が可能な情報および統計を出力します。

同じツールを使用して、キャッシュのフラッシュやノードのリペアなどの、特定の管理コマンドおよび操作を実行できます。

nodetoolユーティリティを使用した監視

nodetoolユーティリティは、クラスターを監視したり、日常のデータベース操作を実行したりするためのコマンドライン・インターフェイスです。このユーティリティは、通常、動作ノードから実行します。

nodetoolユーティリティは、JMXの最も重要なメトリックおよび操作をサポートしています。また、proxyhistogramコマンドなどのクラスターの管理に役立つ他のコマンドが含まれています。

以下の例は、ローカル・コンピューター上にccmで作成した3ノードのクラスターを対象に4,500のINSERT文と45,000のSELECT文を実行した後のnodetool proxyhistogramsの出力を示しています。
nodetool proxyhistograms
proxy histograms
Percentile      Read Latency     Write Latency     Range Latency
                    (micros)          (micros)          (micros)
50%                  1502.50            375.00            446.00
75%                  1714.75            420.00            498.00
95%                 31210.25            507.00            800.20
98%                 36365.00            577.36            948.40
99%                 36365.00            740.60           1024.39
Min                   616.00            230.00            311.00
Max                 36365.00          55726.00          59247.00
リングとその健全性の現状に関する簡単なサマリーを出力するには、nodetool statusを使用します。例を次に示します。
nodetool status
Note: Ownership information does not include topology; for complete information, specify a keyspace
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address    Load       Tokens  Owns    Host ID                               Rack
UN  127.0.0.1  47.66 KB   1       33.3%   aaa1b7c1-6049-4a08-ad3e-3697a0e30e10  rack1
UN  127.0.0.2  47.67 KB   1       33.3%   1848c369-4306-4874-afdf-5c1e95b8732e  rack1
UN  127.0.0.3  47.67 KB   1       33.3%   49578bf1-728f-438d-b1c1-d8dd644b6f7f  rack1
Nodetoolユーティリティは、テーブル、サーバーのメトリック、およびコンパクションの統計の詳細なメトリックを表示するためのコマンドを備えています。
  • nodetool tablestatsは、各テーブルおよびキースペースの統計を表示します。
  • nodetool tablehistogramsは、読み取り/書き込みのレイテンシー、行サイズ、カラム数、SSTableの数など、テーブルの統計を提供します。
  • nodetool netstatsは、ネットワーク操作および接続に関する統計を提供します。
  • nodetool tpstatsは、スレッド・プールごとに、データベースの操作の各段階のアクティブなタスク、保留中のタスク、完了したタスクの数に関する統計を提供します。

nodetool sjkを使用して、その他のコマンドからは使用できない監視のためのMBean値を取得します。

たとえば、ローカル・ノードの非レプリカ・データの要求数を示します。
nodetool sjk mx -b "org.apache.cassandra.metrics:name=LocalNodeNonreplicaRequests,type=ReadCoordination" -f Count -mg
結果には要求数が含まれています。
org.apache.cassandra.metrics:type=ReadCoordination,name=LocalNodeNonreplicaRequests
45

JConsoleを使用した監視

JConsoleは、Javaアプリケーションを監視するためのJMX対応ツールです。JConsoleはSun JDK 5.0以降に付属しています。JConsoleは、DataStax Enterpriseによって公開されているJMXのメトリクスおよび操作を消費し、それらを整然としたGUIに表示します。監視対象ノードごとに、6つの別々のタブビューがあります。
概要
Java VMおよび監視対象の値に関する概要情報を表示します。
メモリー
メモリーの使用に関する情報を表示します。
[Threads(スレッド)]
スレッドの使用に関する情報を表示します。
[Classes(クラス)]
クラス・ローディングに関する情報を表示します。
[VM Summary(VMサマリー)]
Java仮想マシン(VM)に関する情報を表示します。
[MBeans]
MBeanに関する情報を表示します。

[Overview]および[Memory]タブには、開発者にとって非常に役立つ情報が記載されています。[Memory(メモリー)]タブでは、ヒープと非ヒープのメモリー使用量を比較できます。また、Javaガーベージ・コレクションをすぐに実行するためのコントロール機能も備えています。

個々のデータベースのメトリクスおよび操作については、JConsoleの最も重要な部分は[MBeans]タブです。このタブには、以下のMBeanがリストされています。
org.apache.cassandra.auth
パーミッション・キャッシュが含まれます。
org.apache.cassandra.db
キャッシング、テーブル・メトリック、およびコンパクションなど。
org.apache.cassandra.internal
ゴシップ、ヒンテッド・ハンドオフ、およびMemtable値などの内部サーバー操作。
org.apache.cassandra.metrics
CQLにおけるメトリクス、クライアント、キースペース、読み取りリペア、ストレージ、スレッド・プールやその他のトピックが含まれます。
org.apache.cassandra.net
FailureDetector、MessagingService、StreamingManagerなどのノード間通信。
org.apache.cassandra.request
読み取り、書き込み、およびレプリケーション操作に関するタスク。
org.apache.cassandra.service
GCInspectorが含まれます。

ツリーのMBeanを選択すると、MBeanInfoおよびMBean記述子が右側に表示され、属性、操作、または通知は、ツリー内のその下に表示されます。たとえば、以下のように、テーブルで利用可能なアクションを表示するためにorg.apache.cassandra.db MBeanを選択して展開すると、以下のように表示されます。

JConsoleを使用してDataStax Enterpriseを監視することを選択する場合は、JConsoleがかなりの量のシステム・リソースを使用することに注意してください。このため、DataStaxでは、DataStax Enterpriseのノードと同じホスト上ではなく、リモート・マシンでJConsoleを実行することを推奨します。

JConsole CompactionManagerMBeanは、クラスターのキャパシティを増やす必要があるタイミングを示すことが可能なコンパクション・メトリックを公開しています。