Apercu
Fess dispose d’une fonctionnalite de limitation de debit pour maintenir la stabilite et les performances du systeme. Cette fonctionnalite protege le systeme contre les requetes excessives et permet une allocation equitable des ressources.
La limitation de debit s’applique dans les situations suivantes :
API de recherche
API de mode IA
Requetes du crawler
Limitation de debit de l’API de recherche
Vous pouvez limiter le nombre de requetes vers l’API de recherche.
Configuration
app/WEB-INF/conf/system.properties :
# Activer la limitation de debit
api.rate.limit.enabled=true
# Nombre maximum de requetes par minute par adresse IP
api.rate.limit.requests.per.minute=60
# Taille de la fenetre de limitation de debit (secondes)
api.rate.limit.window.seconds=60
Comportement
Les requetes depassant la limite de debit retournent HTTP 429 (Too Many Requests)
Les limites sont appliquees par adresse IP
Les valeurs limites sont comptees avec une methode de fenetre glissante
Limitation de debit du mode IA
La fonctionnalite de mode IA dispose d’une limitation de debit pour controler les couts de l’API LLM et la consommation de ressources.
Configuration
app/WEB-INF/conf/system.properties :
# Activer la limitation de debit du chat
rag.chat.rate.limit.enabled=true
# Nombre maximum de requetes par minute
rag.chat.rate.limit.requests.per.minute=10
Note
La limitation de debit du mode IA s’applique separement de la limitation de debit cote fournisseur LLM. Configurez en tenant compte des deux limites.
Limitation de debit du crawler
Vous pouvez configurer l’intervalle entre les requetes pour eviter que le crawler ne surcharge les sites cibles.
Configuration du crawl Web
Configurez les elements suivants dans l’ecran d’administration « Crawler » -> « Web » :
Intervalle de requetes : Temps d’attente entre les requetes (millisecondes)
Nombre de threads : Nombre de threads de crawl paralleles
Configuration recommandee :
# Sites generaux
intervalTime=1000
numOfThread=1
# Sites a grande echelle (avec autorisation)
intervalTime=500
numOfThread=3
Respect de robots.txt
Fess respecte par defaut la directive Crawl-delay de robots.txt.
# Exemple de robots.txt
User-agent: *
Crawl-delay: 10
Configuration avancee de limitation de debit
Limitation de debit personnalisee
Pour appliquer des limites differentes pour des utilisateurs ou roles specifiques, une implementation de composant personnalise est necessaire.
// Exemple de personnalisation de RateLimitHelper
public class CustomRateLimitHelper extends RateLimitHelper {
@Override
public boolean isAllowed(String key) {
// Logique personnalisee
}
}
Limitation de rafale
Configuration pour tolerer les pics de requetes a court terme tout en empechant une charge elevee continue :
# Capacite de rafale autorisee
api.rate.limit.burst.size=20
# Limite soutenue
api.rate.limit.sustained.requests.per.second=1
Configuration d’exclusion
Vous pouvez exclure certaines adresses IP ou utilisateurs de la limitation de debit.
# Adresses IP exclues (separees par des virgules)
api.rate.limit.excluded.ips=192.168.1.100,10.0.0.0/8
# Roles exclus
api.rate.limit.excluded.roles=admin
Surveillance et alertes
Configuration pour surveiller l’etat de la limitation de debit :
Sortie de logs
Lorsque la limitation de debit est appliquee, elle est enregistree dans les logs :
<Logger name="org.codelibs.fess.helper.RateLimitHelper" level="INFO"/>
Metriques
Les metriques de limitation de debit peuvent etre obtenues via l’API de statistiques systeme :
GET /api/admin/stats
Depannage
Les requetes legitimes sont bloquees
Cause : Les valeurs limites sont trop strictes
Solution :
Augmenter
requests.per.minuteAjouter des IP specifiques a la liste d’exclusion
Ajuster la taille de la fenetre
La limitation de debit ne fonctionne pas
Cause : La configuration n’est pas correctement appliquee
Points a verifier :
Verifier si
api.rate.limit.enabled=trueest configureVerifier si le fichier de configuration est correctement lu
Verifier si Fess a ete redemarre
Impact sur les performances
Si la verification de la limitation de debit affecte les performances :
Changer le stockage de limitation de debit vers Redis ou similaire
Ajuster la frequence des verifications
Informations de reference
Configuration du mode IA - Configuration de la fonctionnalite de mode IA
Présentation - Guide de configuration du crawl Web
Vue d’ensemble de l’API - Apercu des API