Dépannage de Streaming
Découvrez comment résoudre les problèmes courants liés à Streaming.
Cette rubrique traite de divers problèmes liés à Oracle Cloud Infrastructure Streaming et explique comment les résoudre. Les détails relatifs aux erreurs d'API courantes renvoyées par tous les services sont donnés dans Erreurs d'API.
Dépannage de l'accès et des droits d'accès
La demande renvoie un message Exception de traitement lors de la communication et une erreur -1
Lorsque vous utilisez le client Streaming 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 à son environnement. Le service Streaming n'envoie pas la demande, ce qui signifie qu'elle n'est jamais parvenue au service.
Assurez-vous que vous pouvez atteindre l'adresse Streaming. Vous pouvez utiliser telnet pour tester la connectivité à nos adresses publiques. Streaming utilise actuellement les ports 443 et 9092. Le port 443 est utilisé par l'API Streaming et les kits SDK Oracle Cloud Infrastructure. Le port 9092 est utilisé par le protocole Kafka. Votre test telnet doit indiquer le port approprié pour votre cas d'emploi.
Par exemple :
telnet streams.<region>.streaming.oci.oraclecloud.com 443
telnet streams.<region>.streaming.oci.oraclecloud.com 9092
Une connexion réussie au service Streaming renvoie un message Connected to cell-1.streaming.region.oci.oraclecloud.com.
.
Si telnet renvoie un message Unable to connect to remote host
, recherchez sur votre réseau d'éventuels problèmes de blocage, tels qu'une stratégie de pare-feu ou des règles de groupe de sécurité réseau.
La demande renvoie un message NotAuthorizedOrNotFound et une erreur 404
Lorsque vous envoyez une demande à Streaming, un message d'erreur semblable au suivant peut s'afficher :
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 stratégie stream-push est manquante ou que le flux a été supprimé ou n'est pas accessible. Assurez-vous que tous les droits d'accès sont définis correctement.
La demande renvoie un message Introuvable et une erreur 404
Lorsque vous envoyez une demande à Streaming, un message d'erreur semblable au suivant peut s'afficher :
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é au droit d'accès. Assurez-vous que tous les droits d'accès sont définis correctement.
La demande renvoie un message Les clés/espaces de noms de balise suivants ne sont pas autorisés ou sont introuvables
Cette erreur suggère que le flux de données comporte une balise que votre utilisateur n'est pas autorisé à employer. Enlevez la balise ou autorisez l'utilisateur. Pour plus d'informations, reportez-vous à Balises de ressource.
La demande renvoie un message Etablissement de liaison incorrect et une erreur 104
Lorsque vous envoyez une demande à Streaming, un message d'erreur semblable au suivant peut s'afficher :
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 le package ca-certificates sur votre hôte ou extraire le certificat d'autorité de certification à partir de l'adresse cible et l'importer dans votre truststore système à l'aide de la commande update-ca-trust
.
Dépannage des limites et du ralentissement
La section Limites relatives aux ressources Streaming décrit les limites de service et de ressource pouvant entraîner les scénarios suivants.
Echecs partiels
Streaming prend en charge les échecs partiels dus au ralentissement, par partition. En cas d'échec partiel, le service renvoie un code de statut 200
et indique l'échec dans la charge utile de réponse.
Si une demande entière est ralentie, Streaming renvoie un code de statut 429
.
La demande renvoie un message Trop de demandes et une erreur 429
Lorsque vous envoyez une demande à Streaming, un message d'erreur incluant les éléments suivants peut s'afficher :
(429, Too many requests)
Cette erreur est due au mécanisme de ralentissement du service. Elle indique qu'un trop grand nombre de demandes par seconde et par partition est en cours de réception.
Si cette erreur se produit côté émetteur, assurez-vous que le taux d'écriture de données total de 1 Mo par seconde et par partition n'est pas dépassé en effectuant les opérations suivantes :
- Réduction du nombre de demandes par seconde
- Diminution de la taille des messages grâce à un traitement batch
Si cette erreur se produit côté destinataire, procédez aux opérations suivantes :
- Vérifiez que le curseur utilise
commitOnGet(true)
. - Réduisez le nombre de demandes, en gardant à l'esprit que le taux de lecture de données maximal est de 5 demandes GET par seconde, par partition et par groupe de destinataires.
- Vérifiez que
limit
est défini pour chaque demande GET.
La demande renvoie un message La taille de la demande est limitée à 1 Mio et une erreur 400
Lorsque vous envoyez une demande à Streaming, un message d'erreur semblable au suivant peut s'afficher :
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 se produit car l'appel PutMessages
envoyé au service est trop volumineux. La taille doit être inférieure ou égale à 1 Mo.
La création du flux de données échoue avec un message Vous dépassez le nombre de partitions autorisées
Cette erreur survient lorsque vous tentez de créer plus de partitions que le nombre autorisé dans la location. Vous pouvez demander une augmentation.
Dépannage de la production et de l'utilisation
Les messages n'affichent pas dans la console après leur publication dans un flux de données
Vous devez sélectionner Actualiser pour afficher les 100 premiers messages. Pour plus d'informations, reportez-vous à Affichage des messages récents dans un flux.
Etant donné que les flux utilisant des adresses privées ne sont pas accessibles à partir d'Internet, leurs messages ne s'affichent pas dans la console.
Les destinataires 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 d'une demande de messages d'un flux de données, un destinataire peut voir un message d'erreur tel que le suivant :
(400, InvalidParameter, false) The cursor is outside the retention period and is now invalid
Cette erreur signifie que les positions stockées pour des partitions sont en retard par rapport à TRIM_HORIZON. Des pertes de données ont eu lieu et les données produites vers le flux ne sont plus disponibles pour utilisation. Les données situées en dehors de la période de conservation ne peuvent pas être récupérées. A ce stade, l'administrateur doit décider de la meilleure façon d'agir pour le cas d'emploi.
Cette erreur peut se produire si vous ne validez pas régulièrement des positions ou si le destinataire est constamment en retard. Pour plus d'informations, reportez-vous à Obtention des messages.
Il est nécessaire d'appeler manuellement la méthode UpdateGroup
pour réinitialiser le curseur des instances d'un groupe de destinataires.
Les destinataires reçoivent un message Tentative de validation d'une partition non réservée et une erreur 400
Lors d'une demande de messages d'un flux de données, un destinataire faisant partie d'un groupe de destinataires peut voir un message d'erreur tel que le suivant :
(400, InvalidParameter, false) Trying to commit unreserved partition
Cette erreur signifie que le destinataire a essayé de valider une position pour une partition qui ne lui était pas réservée. Cette erreur peut se produire si le destinataire semble avoir expiré, qu'un rééquilibrage des partitions vers un autre destinataire est effectué, puis que le destinataire tente de valider des positions. Le délai d'expiration par défaut est de 30 secondes pour un destinataire. Les délais d'expiration d'un destinataire peuvent être prolongés grâce à l'envoi d'un signal d'activité. Pour plus d'informations, reportez-vous à Utilisation en tant que groupe.
Cette erreur peut également se produire en cas d'utilisation de pipelines (commitOnGet=false
) si aucune validation n'a eu lieu pendant un certain temps (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 à Streaming, un message d'erreur semblable au suivant peut s'afficher :
(400, Unable to parse JSON body)
Cette erreur signifie généralement que le corps JSON contient une entrée de format non valide.
Les demandes de kit SDK Ruby échouent avec un message Impossible d'analyser le corps JSON et une erreur 400
Lorsque vous envoyez une demande à Streaming à l'aide du kit SDK Ruby, un message d'erreur semblable au suivant peut s'afficher :
Unable to parse JSON body, 'status': 400, 'code': 'InvalidParameter'
Le kit SDK 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 de Streaming et de Kafka
Echec de la création de la configuration Kafka Connect
Lorsque vous essayez de créer une configuration Kafka Connect, vous pouvez voir un message d'erreur tel que le suivant :
You are not authorized to create Kafka Connect Configurations
Pour créer une configuration Kafka Connect, vous devez créer la stratégie IAM appropriée dans la location. Par exemple :
Allow group xyz to manage connect-harnesses in tenancy
Pour plus d'informations, reportez-vous à Stratégie IAM requise.