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
| Release | Modifications |
|---|---|
| 21 R5 | Prise en charge des quotas sur le serveur Web |
| 21 R4 | Classe 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
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).
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
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
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
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