Dépannage du service de diffusion en continu
Voyez comment dépanner les problèmes courants liés au service de flux.
Cette rubrique présente divers problèmes liés au service de diffusion en continu pour Oracle Cloud Infrastructure Streaming et explique comment les résoudre. Les détails sur les erreurs d'API courantes retournées par tous les services sont fournis sous Erreurs d'API.
Dépannage des accès et des autorisations
La demande retourne un message d'exception de traitement lors de la communication et une erreur -1
Lorsque vous utilisez le client de diffusion en continu pour envoyer une demande, le message d'erreur suivant peut s'afficher :
Caused by: com.oracle.bmc.model.BmcException: (-1, null, false) Processing exception while communicating to:
https://streams.<region>.streaming.oci.oraclecloud.com (outbound opc-request-id: <opc_request_id>)
at com.oracle.bmc.http.internal.RestClient.convertToBmcException(RestClient.java:540)
at com.oracle.bmc.http.internal.RestClient.get(RestClient.java:96)
at com.oracle.pic.oss.api.StreamAdminClient.getStream(StreamAdminClient.java:292)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMeth
Cette erreur est liée au client ou à l'environnement du client. Le service de diffusion en continu ne l'envoie pas, ce qui signifie que la demande n'est jamais parvenue au service.
Assurez-vous que vous pouvez atteindre votre point d'extrémité de diffusion en continu. Vous pouvez utiliser telnet pour tester la connectivité à nos points d'extrémité publics. Le service de diffusion en continu utilise actuellement les ports 443 et 9092. Le port 443 est utilisé par l'API de diffusion en continu et les trousses SDK d'Oracle Cloud Infrastructure. Le port 9092 est utilisé par le protocole Kafka. Votre test telnet doit indiquer le port approprié pour votre cas d'utilisation.
Par exemple :
telnet streams.<region>.streaming.oci.oraclecloud.com 443
telnet streams.<region>.streaming.oci.oraclecloud.com 9092
Une connexion réussie au service de diffusion en continu retourne un message Connected to cell-1.streaming.region.oci.oraclecloud.com.
.
Si telnet retourne un message Unable to connect to remote host
, recherchez les problèmes de blocage possibles sur votre réseau, tels qu'une politique de pare-feu ou des règles de groupe de sécurité de réseau.
La demande retourne un message NotAuthorizedOrNotFound et une erreur 404
Lorsque vous envoyez une demande au service de diffusion en continu, vous pouvez voir s'afficher un message similaire à ce qui suit :
com.oracle.bmc.model.BmcException: (404, NotAuthorizedOrNotFound,false)
Unknown stream ocid1.stream.oc1.phx.exampleuniqueID.
(opc-request-id: <opc_request_id>)
Une erreur 404 signifie généralement que la ressource nécessaire est introuvable ou que vous n'y avez pas accès. Par exemple, lorsque la politique de poussée de flux est manquante ou que le flux a été supprimé ou n'est pas accessible. Assurez-vous que toutes les autorisations sont correctement définies.
La demande retourne un message "Introuvable" et une erreur 404
Lorsque vous envoyez une demande au service de diffusion en continu, vous pouvez voir s'afficher un message similaire à ce qui suit :
Response { type: "cors", url: "https://streams.<region>.streaming.oci.oraclecloud.com/20180418/streams?
compartmentId=ocid1.tenancy.oc1..exampleuniqueID&limit=10&page=&sortBy=TIMECREATED&sortOrder=desc&lifecycleState=",
redirected: false, status: 404, ok: false, statusText: "Not Found", headers: Headers, bodyUsed: false }
console.js:35
Cette erreur indique un problème lié à une autorisation. Assurez-vous que toutes les autorisations sont correctement définies.
La demande retourne un message indiquant que les espaces de noms/clés de marqueur suivants ne sont pas autorisés ou introuvables
Cette erreur suggère qu'il existe un marqueur sur le flux que l'utilisateur n'est pas autorisé à utiliser. Supprimez le marqueur ou autorisez l'utilisateur. Voir Marqueurs de ressource pour plus d'informations.
La demande retourne un message "Établissement d'une liaison incorrect" et une erreur 104
Lorsque vous envoyez une demande au service de diffusion en continu, vous pouvez voir s'afficher un message similaire à ce qui suit :
SSLError(SSLError(\"bad handshake: SysCallError(104, 'ECONNRESET'.))
Cette erreur signifie généralement que votre système ne dispose pas de l'autorité de certification par laquelle les certificats ont été signés. Vous devrez peut-être installer l'ensemble de certificats émis par l'autorité de certification sur votre hôte ou extraire le certificat AC du point d'extrémité cible et l'importer dans votre magasin de certificats SSL de système à l'aide de la commande update-CA-trust
.
Dépannage des limites et de la limitation
La rubrique Limites pour les ressources de diffusion en continu décrit les limites de service et de ressource qui pourraient se traduire par les scénarios suivants.
Échecs partiels
Le service de diffusion en continu prend en charge les échecs partiels causés par la limitation, par partition. Lorsqu'une défaillance partielle se produit, le service retourne un code de statut 200
et indique l'échec dans les données utiles de la réponse.
Si une demande entière est ralliée, le service de flux retourne un code de statut 429
.
La demande retourne un message " Trop de demandes " et une erreur 429
Lorsque vous envoyez une demande au service de diffusion en continu, vous verrez peut-être un message d'erreur qui inclut les éléments suivants :
(429, Too many requests)
Cette erreur est due au mécanisme de limitation du service. Elle indique que trop de demandes par seconde par partition sont reçues.
Si cette erreur se produit côté producteur, assurez-vous que le taux d'écriture total des données de 1 Mo par seconde par partition n'est pas dépassé par :
- Réduction du nombre de demandes par seconde.
- Diminution de la taille des messages par lots.
Si cette erreur se produit du côté consommateur, assurez-vous que :
- Le curseur utilise
commitOnGet(true)
. - Vous réduisez le nombre de demandes, en gardant à l'esprit que le taux maximal de lecture des données est de 5 demandes GET par seconde par partition par groupe de consommateurs.
- Le paramètre
limit
est défini pour chaque demande GET.
La demande retourne un message indiquant que la taille de la demande est limitée à 1 mébioctet et une erreur 400
Lorsque vous envoyez une demande au service de diffusion en continu, vous pouvez voir s'afficher un message similaire à ce qui suit :
Exception in thread "main" com.oracle.bmc.model.BmcException: (400, InvalidParameter, false) Request size is limited to 1 MiB. (opc-request-id: <opc_request_id>>)
at com.oracle.bmc.http.internal.ResponseHelper.throwIfNotSuccessful(ResponseHelper.java:120)
at com.oracle.bmc.http.internal.ResponseConversionFunctionFactory$ValidatingParseResponseFunction.apply(ResponseConversionFunctionFactory.java:86)
at com.oracle.bmc.http.internal.ResponseConversionFunctionFactory$ValidatingParseResponseFunction.apply(ResponseConversionFunctionFactory.java:82)
at com.oracle.bmc.streaming.internal.http.PutMessagesConverter$1.apply(PutMessagesConverter.java:68)
at com.oracle.bmc.streaming.internal.http.PutMessagesConverter$1.apply(PutMessagesConverter.java:54)
at com.oracle.bmc.streaming.StreamClient.putMessages(StreamClient.java:466)
Cette erreur survient car l'appel PutMessages
envoyé au service est trop volumineux. La taille doit être inférieure ou égale à 1 Mo.
Échec de la création du flux avec un message "Dépassement du nombre de partitions autorisées"
Cette erreur se produit lorsque vous essayez de créer plus de partitions que votre location n'en autorise. Vous pouvez demander une augmentation.
Dépannage de la production et de la consommation
Les messages n'apparaissent pas dans la console après avoir été publiés dans un flux
Vous devez sélectionner Actualiser pour afficher les 100 premiers messages. Pour plus d'informations, voir Affichage des messages récents dans un flux.
Comme les flux utilisant des points d'extrémité privés ne sont pas accessibles à partir d'Internet, leurs messages ne s'affichent pas dans la console.
Les consommateurs reçoivent un message "Le curseur est en dehors de la période de conservation et n'est plus valide" et une erreur 400
Lors de la demande de messages à partir d'un flux, un consommateur peut voir un message d'erreur tel que :
(400, InvalidParameter, false) The cursor is outside the retention period and is now invalid
Cette erreur signifie que les décalages stockés pour une ou plusieurs de vos partitions sont en retard par rapport à l'horizon de découpage. Une perte de données est survenue, et les données qui ont été produites pour le flux ne sont plus disponibles pour la consommation. Les données en dehors de la période de conservation ne peuvent pas être récupérées. À ce stade, l'administrateur doit décider de la meilleure marche à suivre pour le cas d'utilisation.
Cette erreur peut se produire si vous ne validez pas régulièrement les contreparties ou si votre consommateur est constamment en retard. Pour plus d'informations, voir Obtention de messages.
Un appel manuel à la méthode UpdateGroup
est requis pour réinitialiser le curseur pour les instances d'un groupe de consommateurs.
Les consommateurs reçoivent un message "Tentative de validation d'une partition non réservée" et une erreur 400
Lors de la demande de messages à partir d'un flux, un consommateur qui fait partie d'un groupe de consommateurs peut voir un message d'erreur tel que :
(400, InvalidParameter, false) Trying to commit unreserved partition
Cette erreur signifie que le consommateur a tenté de valider un décalage pour une partition qui n'était pas réservée à ce consommateur particulier. Cette erreur peut se produire lorsque le consommateur semble avoir dépassé le délai, que les partitions sont rééquilibrées vers un autre consommateur, puis que le consommateur tente de valider des décalages. La temporisation par défaut est de 30 secondes pour un consommateur. Les temporisations pour un consommateur peuvent être prolongées par l'envoi d'une pulsation. Pour plus d'informations, voir Consommation en tant que groupe.
Cette erreur peut également survenir lors du traitement en pipeline (commitOnGet=false
) et lorsqu'aucune validation n'a lieu pendant une durée importante (plus de 30 secondes).
La demande échoue avec un message "Impossible d'analyser le corps JSON" et une erreur 400
Lorsque vous envoyez une demande au service de diffusion en continu, vous pouvez voir s'afficher un message similaire à ce qui suit :
(400, Unable to parse JSON body)
Cette erreur signifie généralement que le corps JSON contient une entrée dans un format non valide.
Les demandes de trousse SDK pour Ruby ont échoué avec un message "Impossible d'analyser le corps JSON" et une erreur 400
Lorsque vous envoyez une demande de diffusion en continu à l'aide de la trousse SDK pour Ruby, vous pouvez voir s'afficher un message similaire à ce qui suit :
Unable to parse JSON body, 'status': 400, 'code': 'InvalidParameter'
La trousse SDK pour Ruby n'effectue aucun encodage. Vous devez utiliser Base64
pour encoder les chaînes envoyées dans les champs de clé et de valeur. Par exemple :
msgs << OCI::Streaming::Models::PutMessagesDetailsEntry.new(key: Base64.strict_encode64(k), value: Base64.strict_encode64(record.to_json))
if msgs.length > 0
res = @oss_client.put_messages(@stream_ocid, OCI::Streaming::Models::PutMessagesDetails.new(messages: msgs))
end
Dépannage du service de diffusion en continu et de Kafka
Échec de la création de la configuration Kafka Connect
Lorsque vous tentez de créer une configuration Kafka Connect, vous pouvez voir s'afficher un message d'erreur similaire au suivant :
You are not authorized to create Kafka Connect Configurations
Pour créer une configuration Kafka Connect, vous devez créer la politique GIA correcte dans votre location. Par exemple :
Allow group xyz to manage connect-harnesses in tenancy
Pour plus d'informations, voir Politique de gestion des identités et des accès requise.