こんにちは。CData Software Japan の色川です。
CData Virtuality は、CData がお届けするエンタープライズグレードのデータ仮想化プラットフォームです。CData Virtuality によるデータ仮想化は、さまざまなSaaS やアプリケーションに分散して複雑化しているビジネスデータを統合・整理して、誰もがデータの意味を理解し活用できる「セマンティックレイヤー」を提供します。
企業のデータ基盤として、数多くのユーザーのデータ活用を支えるVirtuality では「実行環境のリソース制御」も運用を検討する上での重要なポイントの1つです。Virtuality ではServer 全体のリソースを制御する機構以外に、ユーザー単位でのリソース消費を制御できる「リソースガバナー(Resource Governor)」の機構を備えています。
この記事では、CData Virtuality でユーザー単位でのリソース消費を制御できるリソースガバナー(Resource Governor)についてご紹介します。
Virtuality Server 単位でのリソース制限(Soft Limtis)
ユーザー単位でのリソース消費を制御できるリソースガバナー(Resource Governor)をご紹介する前に、「Virtuality Server 単位でのリソース制限」についても簡単に触れておきます。
CData Virtuality には「同時に実行可能なクエリ数」や「同時に実行可能なジョブの数」に対する制限(Soft Limits)があらかじめ設定されています。これらの制限はVirtuality の実行環境(Virtuality Server)の負荷・リソース消費が妥当な範囲内に収まるようにする安全ライン、いわゆる「サニティ制限」です。
これらの制限のポイントは、Virtuality に同時にリクエストできる数や接続できる数を制限するものではなく、あくまで「Virtuality Server 上で同時に実行される数」を制限するもの、という点です。この制限を超えてリクエストされたクエリやジョブは、リクエストがエラーとされる訳ではなく、実行中のクエリやジョブの終了をキューで待機する形になります。
これらの制限(Soft Limits)を超過した場合は、Virtuality Server のserver.log にその状況が的確に記録されますので、データ仮想化基盤の活用状況にあわせたサイジングを検討する際にも役立ちます。
例えば「同時に実行可能なクエリ数」を超過した場合、server.log には以下のように記録されます。
INFO ... Queuing plan, since max plans has been reached.
ユーザー単位でのリソース制限(リソースガバナー / Resource Governor)
Virtuality Server 単位(Virtuality 全体)でのリソース制限(Soft Limtis)に加え、ユーザー単位でよりキメ細かくリソース消費を制御できる機構が「リソースガバナー(Resource Governor)」です。
「リソースガバナー(Resource Governor)」では、Virtuality を利用するユーザーアカウント単位に以下の基準でのリソース制限を指定する事ができます。それぞれのプロパティのデフォルトは「-1(無制限)」です。
| リソース消費を制限できる基準 |
プロパティ |
| ユーザーが同時に実行可能なクエリ数 |
concurrentQueries |
| クエリ実行に許可される最大時間(分) |
maxQueryTime |
| クエリが返却可能な最大レコード数 |
maxRows |
この「リソースガバナー(Resource Governor)」の機構を利用すれば、それぞれのユーザーの役割に応じた資源配分を制御することができ、Virtuality 全体リソースのより効率的な利用を促進することができます。また特定のユーザーによる想定を超えた過度なリクエストによって無尽蔵にリソース消費を招くような事態を抑止することができます。
以下では「ユーザー単位でのリソース制限の指定」と「リソース制限に該当したときの振舞い」について少し詳しく見ていきましょう。
ユーザー単位でのリソース制限の指定
リソースガバナー(Resource Governor)での「ユーザー単位でのリソース制限の指定」は、「新しいユーザーアカウントを作成する時に指定する」ことも「既存のユーザーアカウントに対して制限を指定する」こともできます。なお「既存のユーザーアカウントに対して制限を指定する」場合は、制限が適用された後に開始されたクエリにのみ影響します。
この記事では、既存のユーザーアカウント(limiteduser1)に対して、以下のような制限を指定してみます。
| リソース消費を制限できる基準 |
プロパティ |
制限値 |
| ユーザーが同時に実行可能なクエリ数 |
concurrentQueries |
3 |
| クエリ実行に許可される最大時間(分) |
maxQueryTime |
5 |
| クエリが返却可能な最大レコード数 |
maxRows |
100 |
call SYSADMIN.setUserLimits("name" => 'limiteduser1', "concurrentQueries" => 3, "maxQueryTime" => 5, "maxRows" => 100);
各ユーザーアカウントで指定されたリソース制限の状況については、System テーブル「SYSADMIN.Users」で確認することができます。
select * from SYSADMIN.Users;
リソース制限に該当したときの振舞い
仮想化基盤全体での安全ガイドライン(サニティ制限)として設けられている「Virtuality Server 単位でのリソース制限(Soft Limtis)」とは異なり、リソースガバナー(Resource Governor)機構での「ユーザー単位でのリソース制限」は、それぞれのユーザーの業務的な役割などに応じて明示的に構成する「リソース消費の上限」として扱われます。
例えば、先ほど制限を指定したユーザーアカウント(limiteduser1)が、指定した「ユーザーが同時に実行可能なクエリ数(concurrentQueries)」を超えてリクエストした場合、そのリクエストは即時にリクエストがキャンセルされ、ユーザー自身が自らに定められたリソース消費の上限を超えたことを的確に知ることができます。
- User limiteduser1@******** has a limit to 3 concurrent queries, but he is already running 3 queries. The current query will be canceled
「クエリ実行に許可される最大時間(分)(maxQueryTime)」を超えた場合も、「クエリが返却可能な最大レコード数(maxRows)」を超えた場合も、、ユーザー自身が自らに定められたリソース消費の上限を超えたことを的確に知ることができます。
まとめ
この記事では、CData Virtuality でユーザー単位でのリソース消費を制御できる「リソースガバナー(Resource Governor)」についてご紹介しました。
Virtuality には実行環境の負荷・リソース消費が妥当な範囲内に収まるようにするためのSoft Limits があらかじめ備わっていますが、今回ご紹介した「リソースガバナー(Resource Governor)」の機構を利用すれば、それぞれのユーザーの役割に応じた資源配分を制御することができ、Virtuality 全体リソースのより効率的な利用を促進することができます。ぜひ、実際の運用の場面でも活用を検討してみてください。
CData Virtuality についてフルマネージドタイプ(SaaS)でのトライアルを希望される方は「無償トライアルへ」からすぐにはじめていただけます。オンプレミス環境などインストールタイプのトライアルを希望される方は「お問い合わせ」よりご連絡ください。
https://jp.cdata.com/virtuality/
製品を試していただく中で何かご不明な点があれば、テクニカルサポートへお気軽にお問い合わせください。
https://jp.cdata.com/support/
この記事では CData Virtuality 25.0 を利用しています。