Search:

Search all manuals
Search this manual
Manual
Couchbase Server マニュアル 2.0
Community Wiki and Resources
Couchbase Server 2.0をダウンロード
Couchbase 開発者ガイド 2.0
クライアントライブラリ
Couchbase Server フォーラム
Additional Resources
Community Wiki
Community Forums
Couchbase SDKs
Parent Section
5 管理タスク
Chapter Sections
Chapters

5.1. サーバのウォームアップのハンドリング

5.1.1. ウォームアップ情報の取得
5.1.2. アクセススキャナの設定変更

Couchbase Server 2.0は、サーバのウォームアップの性能を改善しました。これはデータを提供できるようになる前に、再起動されたサーバが実行しなければならない処理です。このプロセス中の間、サーバはディスク上に永続化されたアイテムをRAMにロードします。データをロードするための一つのアプローチは、ディスクからRAMにアイテムの順次読み込みを行うことです。しかし、サーバはアイテムが頻繁に使用されているかどうかを考慮しないので、必ずしも効果的なプロセスではありません。Couchbase Server 2.0では、ウォームアップ処理の間、データをより迅速に利用できるように、そしてアクセスログから頻繁に使用するアイテムの優先順位を高くするように、最適化処理を追加しています。サーバは、最も頻繁にアクセスされるキーのリストを事前にフェッチし、ディスクから他のアイテムをフェッチする前に、それらのドキュメントをフェッチします。

また、サーバはどのキーが最も頻繁に使用されるかを判定する、変更可能なスキャナのプロセスを実行します。初期化時間とプロセス間隔の変更は、Couchbase Serverのコマンドラインツールから行えます。アプリケーションにピークタイムがあり、その時間帯に使用されるキーを、サーバの再起動後に速やかに利用できるようにしたい場合などに有効でしょう。詳細については、「アクセスログ設定の変更」を参照して下さい。

サーバーは、すべてのドキュメントのキーがRAMにロードされる前にreadyモードに切り替わることができ、データの提供を開始できます。サーバーのウォームアッププロセスを早く終わらせるために設定可能な項目の一つです。

以下に、Couchbase Server 2.0用の新しい初期ウォームアップフェーズについて説明します。これらの最初のフェーズでは、サーバーは、ディスクからすべてのキーとメタデータの取得を開始します。 次に、サーバは最も頻繁に使用されるキーを取得するため、アクセスログ情報を取得します。

Couchbase Serverが、キーに関する情報を得て、アクセスログ情報を読み込めたら、続いてドキュメントのロードを始めます。

Couchbase Serverは、次の条件のいずれかがウォームアップ中に満たされたときにRAMから情報を提供することができます:

サーバがこれらの状態のひとつに達するとき、これをrun levelとよびます。Couchbase Serverがこのポイントに達するとき、残りのキーのドキュメントのロードをすぐに停止します。その後、CouchbaseServerはバックグラウンドで残りのドキュメントをRAM上へ読み込みます。

ウォームアッププロセスをコントロールするために、CouchbaseServer2.0においてアクセスログとスキャンプロセスを理解することも大切です。最初に読み込むべきドキュメントを決定するため、サーバはどのドキュメントが頻繁に使われているかをアクセスログから判断します。

サーバはRAM内のすべてのキーを定期的にスキャンし、それらをaccess.logと名付けられたログに収集し、およびaccess.oldと名付けられたアクセスログのバックアップを同様に管理します。最新のアクセスログが破損している場合、サーバはウォームアップ中にこのバックアップファイルを使用することができます。デフォルトでは、このプロセスでは、GMT2:00に最初に実行され、その後24時間毎に自動的に実行されます。最初に実行する時間と、その後の間隔については変更することができます。

クライアントがウォームアップ中にCouchbase Serverにリクエストした場合、ENGINE_TMPFAIL (0x0d)というエラーコードを返します。このエラーは、ウォームアップがまだ完了していないため、データアクセスがまだ利用可能でないことを示しています。独自Couchbase SDKを作成している人は、ライブラリでこのエラーをハンドリングする必要があります。これは、クライアントが待機して再試行すること、もしくはクライアントがリクエストのバックオフを実行すること、もしくはエラーを生成して、リクエストを再試行しないこと意味します。Couchbase SDKを使用してアプリケーションを構築している人は、このエラーがどのように配信され、ハンドリングされるかは、個々のSDKに依存していることに注意してください。詳細については、選択したCouchbase SDKの言語リファレンスを参照してください。