QuotaManager
4D.QuotaManager クラスは、4D アプリケーションに適用する使用制限を設定およびモニターするためのインターフェースを提供します。しきい値は、例えば、ほとんど最適化されていないリクエストやサーバーリソースの過度な使用などからサーバーを保護することなどに有用です。例えばREST サーバーの場合、クォータを使用することでREST セッションがアクセス可能なORDA リソースを制限することができます。
4D.QuotaManager オブジェクトは以下の方法でインスタンス化することが可能です:
Web サーバーの設定と適用に関する詳細については、Web server クォータ を参照してください。
履歴
| リリース | 内容 |
|---|---|
| 21 R5 | Web サーバークォータのサポート |
| 21 R4 | クラスを追加 |
QuotaManagerオブジェクト
デフォルトでは、4D.QuotaManager オブジェクトのプロパティはUndefined(未定義)となっており、これは対応するクォータが何も適用されていないことを意味します。
4D.QuotaManager オブジェクト自体は直接代入することはできず、プロパティを追加することや削除することもできません。クォータは、既存のオブジェクトの対応するプロパティを変更することで設定されます。
4D.QuotaManager オブジェクトは以下のプロパティを提供します:
| currentValues : Object クォータマネージャーの現在使用されている値 |
| defaultEntitySetTimeout : Integer カレントセッションに保存されているREST エンティティセットのデフォルトの非アクティブタイムアウト(秒単位) |
| inBytesPerHour : Integer Web サーバーが1時間に受信できる最大バイト数 |
| inBytesPerHourPerSession : Integer Web サーバーがセッションに対して1時間に受信できる最大の総バイト数 |
| inBytesPerMin : Integer Web サーバーが1分間に受信できる最大の総バイト数 |
| inBytesPerMinPerSession : Integer Web サーバーがセッションに対して1分間に受信できる最大の総バイト数 |
| maxEntitySetTimeout : Integer カレントセッションの途中にメモリ内に保存されているREST エンティティセットの非アクティブタイムアウトの最大値(秒単位) |
| nbEntitySets : Integer カレントのセッション内においてメモリ内に許可されているREST エンティティセットの最大数 |
| nbEntitySetsPerSession : Integer 各REST セッションに対してメモリ内に許可されているエンティティセットの最大数 |
| nbGuestSessions : Integer Web サーバー上のアクティブなゲストセッション の最大総数 |
| nbRequestsPerHour : Integer Web サーバーが1時間に受信できるリクエストの最大総数 |
| nbRequestsPerHourPerSession : Integer セッションが1時間に受信できるリクエストの最大総数 |
| nbRequestsPerMin : Integer Web サーバーが1分間に受信できるリクエストの最大総数 |
| nbRequestsPerMinPerSession : Integer セッションが1分間に受信できるリクエストの最大総数 |
| nbSessions : Integer Web サーバー上のアクティブセッションの最大総数 |
| outBytesPerHour : Integer Web サーバーが1時間に送信できる最大バイト数 |
| outBytesPerHourPerSession : Integer Web サーバーがセッションに対して1時間に送信できる最大の総バイト数 |
| outBytesPerMin : Integer Web サーバーが1分間に送信できる最大バイト数 |
| outBytesPerMinPerSession : Integer Web サーバーがセッションに対して |
| 1分間に送信できる最大の総バイト数 |
.currentValues
currentValues : Object
説明
.currentValues プロパティにはクォータマネージャーの現在使用されている値 が格納されています。これは4D によって自動的に更新され、また読み出し専用です。
このオブジェクトは4D.QuotaManager オブジェクトと同じプロパティを持ちますが、以下のプロパティのみが現在の使用状況を方向します:
.defaultEntitySetTimeout
defaultEntitySetTimeout : Integer
説明
このクォータは、Session.quotas を使用することで、カレントのREST セッションに対してのみ設定することができます。
.defaultEntitySetTimeout プロパティにはカレントセッションに保存されているREST エンティティセットのデフォルトの非アクティブタイムアウト(秒単位) が格納されています。
スコープ: カレントセッションレベル
デフォルトでは、値は2時間(7200 秒)です。これはまた、$timeout REST API を使用してエンティティセット作成時に定義することもできます。
この値はセッションのquotas.defaultEntitySetTimeout プロパティ を使用することで動的に変更することもできます。これらはセッション内で後で作成されたあらゆるエンティティセットに対して使用することができます(この場合既存のエンティティセットのデフォルトのタイムアウト設定は変更されません)。
maxEntitySetTimeout プロパティ値より大きい値を定義した場合、それはmaxEntitySetTimeout の値に揃えられます。
負の値(<= 0)を渡すことはできません(その場合にはエラーが生成されます)。セッションのプロパティ値をリセットするためには、undefined を渡してください。
例題
REST を処理する4D コード内のどこかで以下の様に書くことができます:
Session.quotas.defaultEntitySetTimeout:=1200
.inBytesPerHour
inBytesPerHour : Integer
説明
.inBytesPerHour プロパティにはWeb サーバーが1時間に受信できる最大バイト数 が格納されています。
スコープ: サーバーグローバルレベル
.inBytesPerHourPerSession
inBytesPerHourPerSession : Integer
説明
.inBytesPerHourPerSession プロパティにはWeb サーバーがセッションに対して1時間に受信できる最大の総バイト数 が格納されています。
スコープ: セッションデフォルトレベル
.inBytesPerMin
inBytesPerMin : Integer
説明
.inBytesPerMin プロパティにはWeb サーバーが1分間に受信できる最大の総バイト数 が格納されています。
スコープ: サーバーグローバルレベル
.inBytesPerMinPerSession
inBytesPerMinPerSession : Integer
説明
.inBytesPerMinPerSession プロパティにはWeb サーバーがセッションに対して1分間に受信できる最大の総バイト数 が格納されています。
スコープ: セッションデフォルトレベル
.maxEntitySetTimeout
maxEntitySetTimeout : Integer
説明
このクォータは、Session.quotas を使用することで、カレントのREST セッションに対してのみ設定することができます。
.maxEntitySetTimeout プロパティにはカレントセッションの途中にメモリ内に保存されているREST エンティティセットの非アクティブタイムアウトの最大値(秒単位) が格納されています。
スコープ: カレントセッションレベル
この値はセッションのquotas.maxEntitySetTimeout プロパティ を使用することで設定することもできます。これらはセッション内で後で作成されたあらゆるエンティティセットに対して使用することができます(この場合既存のエンティティセットのタイムアウトの最大値は変更されません)。
一度.maxEntitySetTimeout プロパティが設定されるとその後セッション内で作成されるあらゆるエンティティセットに対しては.maxEntitySetTimeout の値より長いタイムアウト値を設定することはできません。
例えば、最大非アクティブタイムアウト値が40 分(2400 秒) に設定されていたとして、もしその最大値を超えるタイムアウトを必要とするエンティティセットが作成された場合:
http://127.0.0.1/rest/People?$filter=ID>=4&$method=entityset&$timeout=3000
... リクエスト内で定義されたタイムアウトは無視され、この期間は何も使用されなかった場合には40分後にエンティティセットは解放されます。
負の値(<= 0)を渡すことはできません(その場合にはエラーが生成されます)。セッションのプロパティ値をリセットするためには、undefined を渡してください。
例題
REST を処理する4D コード内のどこかで以下の様に書くことができます:
Session.quotas.maxEntitySetTimeout:=2400
.nbEntitySets
nbEntitySets : Integer
説明
このクォータは、Session.quotas を使用することで、カレントのREST セッションに対してのみ設定することができます。
.nbEntitySets プロパティにはカレントのセッション内においてメモリ内に許可されているREST エンティティセットの最大数 が格納されています。
スコープ: カレントセッションレベル
デフォルトでは、エンティティセットがREST リクエストによってメモリに保存される数 には制約はありません(値は 0 に設定されています)。特定のセッションに対して、サーバーのペイロードを抑えるために、上限を設定することができます。
許可されているエンティティセットの最大数に達すると、エンティティセットの作成を必要とするREST リクエストは、少なくとも1つのエンティティセットが解放されるまでは429 HTTP ステータスコードとエラーレスポンス を受け取ります。 $release REST コマンド を使用することで、キャッシュからエンティティセットを解放することができます。
負の値(<= 0)を渡すことはできません(その場合にはエラーが生成されます)。セッションのプロパティ値をリセットするためには、undefined を渡してください。
例題
REST を処理する4D コード内のどこかで以下の様に書くことができます:
// エンティティセットの最大数は 50
Session.quotas.nbEntitySets:=50
.nbEntitySetsPerSession
nbEntitySetsPerSession : Integer
説明
このクォータはREST セッションに対してのみ適用されます。
.nbEntitySetsPerSession プロパティには各REST セッションに対してメモリ内に許可されているエンティティセットの最大数 が格納されています。
スコープ: セッションデフォルトレベル
.nbGuestSessions
nbGuestSessions : Integer
説明
.nbGuestSessions プロパティにはWeb サーバー上のアクティブなゲストセッション の最大総数 が格納されています。
スコープ: サーバーグローバルレベル
.nbRequestsPerHour
nbRequestsPerHour : Integer
説明
.nbRequestsPerHour プロパティにはWeb サーバーが1時間に受信できるリクエストの最大総数 が格納されています。
スコープ: サーバーグローバルレベル
.nbRequestsPerHourPerSession
nbRequestsPerHourPerSession : Integer
説明
.nbRequestsPerHourPerSession プロパティにはセッションが1時間に受信できるリクエストの最大総数 が格納されています。
スコープ: セッションデフォルトレベル
.nbRequestsPerMin
nbRequestsPerMin : Integer
説明
.nbRequestsPerMin プロパティにはWeb サーバーが1分間に受信できるリクエストの最大総数 が格納されています。
スコープ: サーバーグローバルレベル
.nbRequestsPerMinPerSession
nbRequestsPerMinPerSession : Integer
説明
.nbRequestsPerMinPerSession プロパティにはセッションが1分間に受信できるリクエストの最大総数 が格納されています。
スコープ: セッションデフォルトレベル
.nbSessions
nbSessions : Integer
説明
.nbSessions プロパティにはWeb サーバー上のアクティブセッションの最大総数 が格納されています。
スコープ: サーバーグローバルレベル
.outBytesPerHour
outBytesPerHour : Integer
説明
.outBytesPerHour プロパティにはWeb サーバーが1時間に送信できる最大バイト数 が格納されています。このクォータは、Web サーバーの圧縮設定に関わらず、圧縮されていないレスポンスのペイロードサイズに基づいて評価されます。
スコープ: サーバーグローバルレベル
.outBytesPerHourPerSession
outBytesPerHourPerSession : Integer
説明
.outBytesPerHourPerSession プロパティにはWeb サーバーがセッションに対して1時間に送信できる最大の総バイト数 が格納されています。このクォータは、Web サーバーの圧縮設定に関わらず、圧縮されていないレスポンスのペイロードサイズに基づいて評価されます。
スコープ: セッションデフォルトレベル
.outBytesPerMin
outBytesPerMin : Integer
説明
.outBytesPerMin プロパティにはWeb サーバーが1分間に送信できる最大バイト数 が格納されています。このクォータは、Web サーバーの圧縮設定に関わらず、圧縮されていないレスポンスのペイロードサイズに基づいて評価されます。
スコープ: サーバーグローバルレベル
.outBytesPerMinPerSession
outBytesPerMinPerSession : Integer
説明
.outBytesPerMinPerSession プロパティにはWeb サーバーがセッションに対して
1分間に送信できる最大の総バイト数 が格納されています。このクォータは、Web サーバーの圧縮設定に関わらず、圧縮されていないレスポンスのペイロードサイズに基づいて評価されます。
スコープ: セッションデフォルトレベル