Rendement de l'USDC avec couverture intégréeQuicknode Earn propose désormais un rendement en USDC avec une couverture intégrée contre les risques liés au protocole, garantie par OpenCover. Six coffres-forts couverts sont disponibles sur Base.
RPC et API>Qu'est-ce que la limitation du débit RPC ?
Réponses>En savoir plus sur le RPC et les API>Qu'est-ce que la limitation du débit RPC ?
Qu'est-ce que la limitation de débit RPC ?
// Tags
Limitation du débit RPCLimites de débit de l'API
En bref : la limitation de débit RPC est un mécanisme qui restreint le nombre de requêtes que votre application peut envoyer à un nœud de blockchain au cours d’une période donnée. Lorsque vous dépassez cette limite, les requêtes suivantes sont rejetées (généralement avec une erreur HTTP 429) jusqu’à ce que la période soit réinitialisée. Les limitations de débit visent à protéger l’infrastructure partagée contre les abus et à garantir un accès équitable à tous les utilisateurs. Il est essentiel de comprendre et de gérer ces limitations pour développer des applications blockchain fiables qui ne tombent pas en panne sous la charge.
L'explication simple
Imaginez la cuisine d'un restaurant capable de préparer 100 repas par heure. Si 50 clients commandent chacun 3 plats, la cuisine fonctionne à pleine capacité. Si un client tente de commander 50 plats, la cuisine doit refuser sa commande afin que tous les autres puissent quand même manger. La limitation de débit fonctionne de la même manière. Un nœud de blockchain dispose d'une capacité de traitement limitée, et les limites de débit garantissent qu'aucune application ne monopolise cette capacité au détriment de tous les autres utilisateurs de la même infrastructure.
Lorsque votre application envoie trop de requêtes RPC en trop peu de temps, le nœud renvoie une erreur au lieu des données demandées. Chez la plupart des fournisseurs, il s’agit d’un code d’état HTTP 429 « Too Many Requests » (Trop de requêtes), souvent accompagné d’un corps d’erreur JSON-RPC qui vous indique le nombre de requêtes autorisées, le nombre de requêtes que vous avez tentées et le délai d’attente avant de réessayer. Si votre application ignore ces signaux et continue d'envoyer des requêtes, le fournisseur peut bloquer temporairement votre adresse IP ou suspendre complètement votre clé API.
Les limites de débit sont généralement exprimées en requêtes par seconde (RPS), en requêtes par minute ou en une combinaison des deux. Un fournisseur peut autoriser 25 RPS sur un niveau gratuit, 300 RPS sur un niveau « croissance » et plus de 1 000 RPS sur un niveau « entreprise ». Certains fournisseurs appliquent également des limites par méthode, ce qui signifie que certaines méthodes gourmandes en ressources de calcul, telles que `debug_traceTransaction` ou `eth_getLogs` avec de grandes plages de blocs, ont des limites individuelles inférieures à celles des méthodes légères comme `eth_blockNumber`.
Pourquoi existe-t-il des limites de débit ?
Les limites de débit ont trois objectifs principaux. Premièrement, elles protègent la stabilité de l’infrastructure. Les nœuds de la blockchain sont des systèmes à état qui gèrent l’ensemble des données de la blockchain et exécutent des opérations complexes telles que les appels EVM et les recherches d’état. Un afflux incontrôlé de requêtes peut surcharger le processeur, la mémoire, les E/S disque ou la bande passante réseau d’un nœud, ce qui peut dégrader les performances pour tous les utilisateurs ou provoquer un plantage complet du nœud. Les limites de débit agissent comme un disjoncteur qui empêche un client isolé de provoquer des défaillances en cascade.
Deuxièmement, les limites de débit garantissent une répartition équitable des ressources. Sur une infrastructure partagée (ce qu’utilisent la plupart des développeurs), des centaines, voire des milliers d’applications se partagent le même pool de nœuds. Sans limites de débit, une seule application exécutant un script d’indexation trop gourmand ou une boucle d’interrogation mal configurée pourrait consommer la majeure partie de la capacité disponible, privant ainsi les autres applications des ressources dont elles ont besoin. Les limites de débit imposent une politique d’utilisation équitable qui garantit à chaque application une part raisonnable.
Troisièmement, les limites de débit constituent un moyen de protection contre les abus. Les attaques par déni de service, qu'elles soient intentionnelles ou accidentelles, peuvent paralyser l'infrastructure dont dépendent de nombreuses applications. Les limites de débit empêchent à la fois les acteurs malveillants d'exploiter les points d'accès publics à des fins malveillantes et les développeurs bien intentionnés de provoquer accidentellement une attaque DDoS sur un nœud à cause d'un script hors de contrôle.
Comment les limites de débit affectent votre application
Si votre application n'est pas conçue pour gérer les limites de débit, elle cessera de fonctionner en production. L'mode à l'origine de la défaillance la plus courante est une boucle d'interrogation qui interroge la blockchain trop fréquemment. Une application qui appelle « eth_blockNumber » toutes les 100 ms pour vérifier la présence de nouveaux blocs effectue à elle seule 600 requêtes par minute sur cette méthode. Si l'on ajoute à cela les vérifications de solde, les requêtes de journalisation et les interrogations sur l'état des transactions pour chaque utilisateur actif, on peut facilement dépasser même les limites de débit les plus généreuses.
Les abonnements WebSocket peuvent également déclencher des limites de débit. Si la requête d'abonnement initiale compte pour un seul appel, chaque message entrant provenant du serveur (comme une notification de nouveau bloc ou une alerte de transaction en attente) peut, chez certains fournisseurs, être pris en compte dans votre consommation. Si votre application s'abonne à des é streams d'événements à haute fréquence sur plusieurs contrats, le volume de messages entrants peut augmenter rapidement.
Les requêtes ayant échoué en raison de la limitation de débit entraînent un effet domino. Lorsque votre application ne reçoit pas les données qu’elle a demandées, elle peut réessayer d’envoyer la requête, ce qui augmente encore la charge. Si ces nouvelles tentatives ne sont pas mises en œuvre avec un recul exponentiel, vous créez une boucle de rétroaction dans laquelle les requêtes soumises à une limitation de débit génèrent davantage de requêtes, qui à leur tour entraînent une limitation de débit encore plus importante. Ce schéma peut, dans les faits, empêcher votre application d’accéder à l’ endpoint RPC jusqu’à ce que la fenêtre de limitation de débit soit réinitialisée.
Stratégies de gestion des limites de débit
La stratégie la plus efficace consiste à réduire le nombre de requêtes que votre application doit effectuer. La mise en cache est au cœur de cette approche. Si votre application affiche les cours de l’ETH, les métadonnées des jetons ou d’autres données évoluant lentement, mettez ces résultats en cache localement et actualisez-les à un intervalle raisonnable, plutôt que d’interroger le nœud à chaque chargement de page ou à chaque action de l’utilisateur. Pour les données qui changent à chaque bloc, abonnez-vous via WebSocket plutôt que d’effectuer des requêtes HTTP, car un seul abonnement remplace des milliers de requêtes individuelles.
Le regroupement des requêtes réduit la charge HTTP et peut vous aider à respecter les limites de débit. Au lieu d’effectuer 10 appels distincts pour consulter les soldes de 10 portefeuilles différents, regroupez-les en une seule requête JSON-RPC sous forme de tableau. Le nœud traite chacune d’elles individuellement, mais vous n’utilisez qu’une seule requête HTTP pour les transmettre toutes. Sachez que certains fournisseurs comptabilisent chaque appel de méthode au sein d’un lot dans votre limite de débit, et pas seulement la requête HTTP elle-même.
La mise en place d'une limitation du débit côté client est une bonne pratique préventive. Plutôt que d'attendre que le serveur rejette vos requêtes, surveillez le débit de vos requêtes sortantes et mettez en file d'attente ou retardez celles qui dépasseraient la limite que vous vous êtes fixée. Cela permet de maintenir votre application dans les limites fixées de manière proactive et d'éviter la perte de latence liée au rejet des requêtes. Des bibliothèques telles que « bottleneck » (Node.js) ou « ratelimit » (Python) facilitent grandement cette mise en œuvre.
Choisir le niveau d'infrastructure adapté à votre utilisation est, en fin de compte, la solution la plus fiable. Si votre application atteint systématiquement les limites de débit, c'est qu'elle a besoin de plus de capacité, et non de nouvelles astuces d'optimisation. Passer à un niveau supérieur ou opter pour une infrastructure dédiée élimine complètement le problème de limitation de débit.
Que signifie une erreur HTTP 429 ?
Une réponse HTTP 429 « Too Many Requests » (Trop de requêtes) signifie que vous avez dépassé le taux de requêtes autorisé pour la plage horaire en cours. Le nœud fonctionne correctement et vos identifiants sont généralement valides ; vous envoyez simplement des requêtes à un rythme plus rapide que ne le permet votre forfait. Pour résoudre ce problème, lisez la réponse, qui indique souvent le délai d’attente, puis réessayez après ce délai en utilisant un recul exponentiel afin que les échecs répétés n’alourdissent pas davantage la charge. Si les erreurs 429 persistent, cela signifie que vous devez réduire le volume de requêtes ou passer à un niveau de capacité supérieur plutôt que d’insister en multipliant les tentatives. Comprendre le fonctionnement des requêtes RPC et la manière dont une endpoint RPC traite les appels permet de mieux saisir pourquoi certaines méthodes atteignent leurs limites plus rapidement que d’autres.
Comment éviter d'atteindre les limites de fréquence des appels RPC ?
Pour contourner les limites de débit, il s'agit principalement d'envoyer moins de requêtes, moins coûteuses, et de les espacer dans le temps. Le tableau ci-dessous résume les techniques les plus efficaces et indique dans quels cas chacune d'entre elles est la plus adaptée.
Technique
Fonctionnalités
Idéal pour
Mise en cache
Réutilise les résultats pour les données évoluant lentement
Prix, métadonnées, soldes
Diffusion en continu par rapport au sondage
Remplace les sondages répétés par des données transmises en continu
Mises à jour et indexation par bloc
Dosage
Regroupe plusieurs appels en une seule requête
Les lectures groupées s'apparentent à de nombreux soldes
Limitation du débit côté client
Mise en file d'attente des demandes visant à rester en dessous du plafond
Trafic par rafales ou généré par les utilisateurs
Infrastructure de niveau supérieur ou dédiée
Augmente ou supprime la limite
Volume de demandes élevé et constant
Le passage du mode « polling » au mode « streaming » constitue souvent la mesure la plus efficace pour réduire le nombre de requêtes. Lorsque l'optimisation ne suffit plus, le choix se résume à la question suivante : « développer en interne ou acheter une solution? », en fonction du niveau de capacité et de fiabilité que vous souhaitez disposer.
Quelle est la différence entre la limitation de débit et la régulation du débit ?
Ces termes sont souvent utilisés de manière interchangeable, mais ils décrivent des réponses différentes face à une charge excessive. La limitation de débit impose un plafond strict : dès qu’il est dépassé, les requêtes sont purement et simplement rejetées, généralement avec un code d’erreur 429. La régulation est plus souple : au lieu de rejeter les requêtes, le système les ralentit ou les met en file d’attente afin qu’elles aboutissent tout de même, mais plus lentement. Les deux mécanismes protègent l’infrastructure partagée, mais leurs défaillances se manifestent différemment du point de vue du client.
Aspect
Limitation du débit
Limitation de débit
Réaction face à l'excès
Rejette les demandes
Ralentit ou met en file d'attente les requêtes
Signal type
Erreur HTTP 429
Augmentation de la latence
Impact sur les clients
Appels ayant échoué à réessayer
Appels différés mais effectués
Objectif
Imposer une limite stricte d'utilisation
Lisser les pics de trafic
Ces deux phénomènes peuvent se traduire par une augmentation de la latence RPC du point de vue de l'application, et tous deux sont liés aux compromis entre débit global et latence au sein de votre infrastructure.
Foire aux questions
Quelle est la limite acceptable pour le taux de RPC ?
Cela dépend de votre charge de travail et de votre niveau de forfait. Les forfaits gratuits peuvent autoriser environ 25 requêtes par seconde, tandis que les forfaits « Growth » et « Enterprise » peuvent atteindre des centaines, voire des milliers. La limite idéale est celle qui dépasse largement votre débit de requêtes maximal après avoir mis en place la mise en cache, le traitement par lots et la diffusion en continu.
Comment dois-je gérer une réponse 429 ?
Évitez de surcharger l'endpoint et réessayez plutôt que de multiplier les tentatives. Utilisez un délai d'attente exponentiel avec une variation aléatoire, respectez toute indication de délai de réessai figurant dans la réponse et limitez le nombre de tentatives. Si les codes d'erreur 429 persistent, réduisez le volume de requêtes ou augmentez la capacité plutôt que d'intensifier les tentatives.
Les requêtes groupées comptent-elles pour une seule requête ?
Pas toujours. Le lot est envoyé sous la forme d'une seule requête HTTP, mais de nombreux fournisseurs comptabilisent chaque appel de méthode contenu dans le lot dans votre limite de débit. Le regroupement en lots réduit certes la charge réseau, mais il ne réduit pas nécessairement le nombre d'appels comptabilisés.
Le streaming permet-il de contourner les limites de débit ?
Dans l'ensemble, oui, pour l'ingestion de données. Un flux de type « push » transmet les nouvelles données de la blockchain au fur et à mesure de leur production, au lieu de nécessiter des milliers d'appels de sondage, ce qui élimine la majeure partie du volume de requêtes à l'origine de la limitation de débit.
Pourquoi certaines méthodes sont-elles soumises à des limites de débit plus strictes ?
Les méthodes gourmandes en ressources de calcul, telles que le traçage des transactions ou les requêtes sur des journaux volumineux, consomment bien plus de ressources du nœud que les appels légers, comme la récupération du numéro du dernier bloc. Les fournisseurs appliquent des limites plus strictes par méthode à ces appels gourmands afin de préserver la stabilité globale du nœud.
Comment « Quicknode » gère les limites de débit
Quicknode offre des contrôles de limitation de débit flexibles qui permettent aux développeurs de gérer l'utilisation de leur endpoint. Au-delà des limites RPS au niveau du forfait, Quicknode propose une limitation de débit au niveau des méthodes qui vous permet de définir des limites précises pour chaque méthode RPC. Cela s'avère particulièrement utile pour protéger votre endpoint contre les scripts incontrôlables ou les intégrations tierces susceptibles d'appeler de manière excessive des méthodes coûteuses. Vous pouvez configurer des limites par seconde, par minute ou par jour pour chaque méthode, soit via l’interface utilisateur du tableau de bord, soit par programmation via l’API Console.
Quicknode Il propose également une limitation de débit basée sur les adresses IP permettant de contrôler le nombre total de requêtes provenant d’adresses IP individuelles, ce qui s’avère utile lorsque votre endpoint est exposée à des applications côté client pour lesquelles vous ne pouvez pas contrôler entièrement le volume de requêtes. Les analyses en temps réel disponibles sur le tableau de bord de l’ Quicknode vous indiquent le volume d’appels de méthodes, les statuts de réponse et les temps de réponse, vous offrant ainsi une visibilité complète sur vos schémas d’utilisation afin que vous puissiez identifier et résoudre les problèmes avant qu’ils ne se transforment en problèmes de limitation de débit.
Pour les équipes qui ont besoin de s'affranchir complètement des limites de débit, Quicknode Streams remplace le modèle requête-réponse par un modèle de diffusion des données de type « push ». Au lieu que votre application interroge le nœud des milliers de fois par minute, Streams transmet les données de la blockchain directement à votre webhook, votre base de données ou votre entrepôt de données dès que de nouveaux blocs sont créés. Cela élimine complètement les limites de débit RPC pour les charges de travail d’ingestion de données, tout en réduisant la latence et en simplifiant votre architecture backend.