Aller au contenu principal
Version : Suivant

QuotaManager

La classe 4D.QuotaManager vous offre une interface permettant de configurer et de surveiller certaines limites d'utilisation que vous appliquez à votre application 4D. Les seuils sont utiles, par exemple, pour protéger le serveur contre les requêtes mal optimisées ou l'utilisation excessive de ses ressources. Pour le serveur REST, par exemple, des quotas peuvent limiter les ressources ORDA accessibles pour une session REST.

Les objets 4D.QuotaManager peuvent être instanciés par:

Pour plus d'informations sur la configuration et l'application des quotas sur le serveur Web, consultez la page Quotas du serveur Web.

Historique
ReleaseModifications
21 R5Prise en charge des quotas sur le serveur Web
21 R4Classe ajoutée

Objet QuotaManager​

Par défaut, les propriétés d'un objet 4D.QuotaManager sont Undefined, ce qui signifie qu'aucun quota correspondant n'est appliqué.

L'objet 4D.QuotaManager ne peut pas être affecté directement, et aucune propriété ne peut y être ajoutée ni supprimée. Les quotas sont configurés en modifiant les propriétés correspondantes de l'objet existant.

Les objets 4D.QuotaManager exposent les propriétés suivantes :

currentValues : Object
valeurs courantes utilisées par le gestionnaire de quotas
defaultEntitySetTimeout : Integer
le délai d'inactivité par défaut pour les entity sets REST stockés en mémoire pendant la session courante (en secondes)
inBytesPerHour : Integer
le nombre maximal d'octets que le serveur Web peut recevoir en une heure
inBytesPerHourPerSession : Integer
le nombre maximal d'octets que le serveur Web peut recevoir pour une session en une heure
inBytesPerMin : Integer
le nombre maximal d'octets que le serveur Web peut recevoir en une minute
inBytesPerMinPerSession : Integer
le nombre maximal d'octets que le serveur Web peut recevoir pour une session en une minute
maxEntitySetTimeout : Integer
la valeur du délai d'inactivité maximal pour les entity sets REST stockés en mémoire pendant la session courante (en secondes)
nbEntitySets : Integer
le nombre maximal d'entity sets REST autorisés en mémoire pour la session courante
nbEntitySetsPerSession : Integer
le nombre maximal d'entity sets autorisés en mémoire pour chaque session REST
nbGuestSessions : Integer
le nombre total maximal de sessions Guest actives sur le serveur Web
nbRequestsPerHour : Integer
le nombre total maximal de requêtes que le serveur Web peut recevoir en une heure
nbRequestsPerHourPerSession : Integer
le nombre maximal de requêtes qu'une session peut recevoir en une heure
nbRequestsPerMin : Integer
le nombre maximal de requêtes que le serveur Web peut recevoir en une minute
nbRequestsPerMinPerSession : Integer
le nombre maximal de requêtes qu'une session peut recevoir en une minute
nbSessions : Integer
le nombre maximal de sessions actives sur le serveur Web
outBytesPerHour : Integer
le nombre maximal d'octets que le serveur Web peut envoyer en une heure
outBytesPerHourPerSession : Integer
le nombre maximal d'octets que le serveur Web peut envoyer pour une session en une heure
outBytesPerMin : Integer
le nombre maximal d'octets que le serveur Web peut envoyer en une minute
outBytesPerMinPerSession : Integer
le nombre maximal d'octets que le serveur Web peut envoyer pour une session en une minute

.currentValues​

currentValues : Object

Description​

La propriété .currentValues contient les valeurs courantes utilisées par le gestionnaire de quotas. Elle est mise à jour automatiquement par 4D et est en lecture seule.

Cet objet possède les mêmes propriétés que l'objet 4D.QuotaManager, mais seules les propriétés suivantes indiquent des valeurs courantes :

.defaultEntitySetTimeout​

defaultEntitySetTimeout : Integer

Description​

note

Ce quota peut être également configuré pour la session REST courante uniquement via Session.quotas.

La propriété .defaultEntitySetTimeout contient le délai d'inactivité par défaut pour les entity sets REST stockés en mémoire pendant la session courante (en secondes).

Portée : session courante

Par défaut, cette valeur est de 2 heures (7200 secondes). Elle peut également être définie lors de la création de l'entity set à l'aide de l'API REST $timeout.

Vous pouvez modifier cette valeur de manière dynamique à l'aide de la propriété quotas.defaultEntitySetTimeout de la session, afin qu'elle s'applique à tout entity set créé par la suite au cours de la session (les valeurs de délai d'expiration par défaut des entity sets existants ne sont pas modifiées).

note

Si vous définissez une valeur supérieure à celle de la propriété maxEntitySetTimeout, elle sera alignée sur la valeur de maxEntitySetTimeout.

Vous ne pouvez pas passer une valeur <= 0 (une erreur est générée dans ce cas). Pour réinitialiser la valeur de la propriété pour la session, passez undefined.

Exemple​

Dans un code 4D au sein d'un process REST :

Session.quotas.defaultEntitySetTimeout:=1200

.inBytesPerHour​

inBytesPerHour : Integer

Description​

La propriété .inBytesPerHour contient le nombre maximal d'octets que le serveur Web peut recevoir en une heure.

Portée : serveur global

.inBytesPerHourPerSession​

inBytesPerHourPerSession : Integer

Description​

La propriété .inBytesPerHourPerSession contient le nombre maximal d'octets que le serveur Web peut recevoir pour une session en une heure.

Portée : session par défaut

.inBytesPerMin​

inBytesPerMin : Integer

Description​

La propriété .inBytesPerMin contient le nombre maximal d'octets que le serveur Web peut recevoir en une minute.

Portée : serveur global

.inBytesPerMinPerSession​

inBytesPerMinPerSession : Integer

Description​

La propriété .inBytesPerMinPerSession contient le nombre maximal d'octets que le serveur Web peut recevoir pour une session en une minute.

Portée : session par défaut

.maxEntitySetTimeout​

maxEntitySetTimeout : Integer

Description​

note

Ce quota peut être également configuré pour la session REST courante uniquement via Session.quotas.

La propriété .maxEntitySetTimeout contient la valeur du délai d'inactivité maximal pour les entity sets REST stockés en mémoire pendant la session courante (en secondes).

Portée : session courante

Vous pouvez définir cette valeur à l'aide de la propriété quotas.maxEntitySetTimeout de la session, afin qu'elle s'applique à tout entity set créé par la suite au cours de la session (les valeurs de délai d'inactivité maximale des entity sets existants ne sont pas modifiées).

Une fois la propriété .maxEntitySetTimeout définie, aucun entity set créé par la suite au cours de la session ne peut avoir un délai d'inactivité supérieur à la valeur de .maxEntitySetTimeout.

Par exemple, en supposant que le délai d'inactivité maximal soit fixé à 40 minutes (2400 secondes), si un entity set est créé avec un délai d'inactivité requis supérieur à cette valeur maximale :

http://127.0.0.1/rest/People?$filter=ID>=4&$method=entityset&$timeout=3000

... alors le délai défini dans la requête est ignoré et l'entity set sera libéré après 40 minutes s'il n'est pas utilisé pendant cette période.

Vous ne pouvez pas passer une valeur <= 0 (une erreur est générée dans ce cas). Pour réinitialiser la valeur de la propriété pour la session, passez undefined.

Exemple​

Dans un code 4D au sein d'un process REST :

Session.quotas.maxEntitySetTimeout:=2400

.nbEntitySets​

nbEntitySets : Integer

Description​

note

Ce quota peut être également configuré pour la session REST courante uniquement via Session.quotas.

La propriété .nbEntitySets contient le nombre maximal d'entity sets REST autorisés en mémoire pour la session courante.

Portée : session courante

Par défaut, il n'y a pas de limite pour les entity sets stockés en mémoire par les requêtes REST (la valeur est 0). Vous pouvez définir une limite afin de contrôler la charge utile du serveur pour une session spécifique.

Lorsque le nombre maximal d'entity sets autorisé est atteint, une requête REST visant à créer un entity set recevra un status code HTTP 429 et une réponse d'erreur, jusqu'à ce qu'au moins un entity set soit libéré. Vous pouvez libérer un entity set du cache à l'aide de la commande REST $release.

Vous ne pouvez pas passer une valeur <= 0 (une erreur est générée dans ce cas). Pour réinitialiser la valeur de la propriété pour la session, passez undefined.

Exemple​

Dans un code 4D au sein d'un process REST :

//max 50 entity sets
Session.quotas.nbEntitySets:=50

.nbEntitySetsPerSession​

nbEntitySetsPerSession : Integer

Description​

note

Ce quota s'applique uniquement à une session REST.

La propriété .nbEntitySetsPerSession contient le nombre maximal d'entity sets autorisés en mémoire pour chaque session REST.

Portée : session par défaut

.nbGuestSessions​

nbGuestSessions : Integer

Description​

La propriété .nbGuestSessions contient le nombre total maximal de sessions Guest actives sur le serveur Web.

Portée : serveur global

.nbRequestsPerHour​

nbRequestsPerHour : Integer

Description​

La propriété .nbRequestsPerHour contient le nombre total maximal de requêtes que le serveur Web peut recevoir en une heure.

Portée : serveur global

.nbRequestsPerHourPerSession​

nbRequestsPerHourPerSession : Integer

Description​

La propriété .nbRequestsPerHourPerSession contient le nombre maximal de requêtes qu'une session peut recevoir en une heure.

Portée : session par défaut

.nbRequestsPerMin​

nbRequestsPerMin : Integer

Description​

La propriété .nbRequestsPerMin contient le nombre maximal de requêtes que le serveur Web peut recevoir en une minute.

Portée : serveur global

.nbRequestsPerMinPerSession​

nbRequestsPerMinPerSession : Integer

Description​

La propriété .nbRequestsPerMinPerSession contient le nombre maximal de requêtes qu'une session peut recevoir en une minute.

Portée : session par défaut

.nbSessions​

nbSessions : Integer

Description​

La propriété .nbSessions contient le nombre maximal de sessions actives sur le serveur Web.

Portée : serveur global

.outBytesPerHour​

outBytesPerHour : Integer

Description​

La propriété .outBytesPerHour contient le nombre maximal d'octets que le serveur Web peut envoyer en une heure. Le quota est calculé avec la taille non compressée de la charge utile de la réponse, quels que soient les paramètres de compression du serveur Web.

Portée : serveur global

.outBytesPerHourPerSession​

outBytesPerHourPerSession : Integer

Description​

La propriété .outBytesPerHourPerSession contient le nombre maximal d'octets que le serveur Web peut envoyer pour une session en une heure. Le quota est calculé avec la taille non compressée de la charge utile de la réponse, quels que soient les paramètres de compression du serveur Web.

Portée : session par défaut

.outBytesPerMin​

outBytesPerMin : Integer

Description​

La propriété .outBytesPerMin contient le nombre maximal d'octets que le serveur Web peut envoyer en une minute. Le quota est calculé avec la taille non compressée de la charge utile de la réponse, quels que soient les paramètres de compression du serveur Web.

Portée : serveur global

.outBytesPerMinPerSession​

outBytesPerMinPerSession : Integer

Description​

La propriété .outBytesPerMinPerSession contient le nombre maximal d'octets que le serveur Web peut envoyer pour une session en une minute. Le quota est calculé avec la taille non compressée de la charge utile de la réponse, quels que soient les paramètres de compression du serveur Web.

Portée : session par défaut