Causes de send_fail dans le statut

Phénomène :

Lorsque vous exécutez la commande status, vous voyez des cas de send_fail. Quelle est la raison ?

Réponse :

Avoir un send_fail n'est généralement pas un problème majeur. Cela est généralement dû à la fermeture active de la connexion par le client ou à l'incapacité du client à recevoir des données, ce qui entraîne un échec de l'envoi de données.

Il existe deux raisons pour send_fail :

  1. Lors de l'appel de l'interface send pour envoyer des données au client, il est constaté que le client est déjà déconnecté, donc le compteur de send_fail est incrémenté de 1. Comme c'est une déconnexion active du côté du client, cela est considéré comme un phénomène normal et peut généralement être ignoré.

  2. La vitesse à laquelle le serveur envoie des données est supérieure à la vitesse à laquelle le client reçoit, ce qui entraîne un empilement constant de données dans le tampon du serveur (workerman crée un tampon d'envoi pour chaque client). Si la taille du tampon dépasse la limite (TcpConnection::$maxSendBufferSize par défaut 1M), les données seront abandonnées, déclenchant l'événement onError (s'il y en a un) et entraînant l'incrémentation du compteur de send_fail de 1.

Par exemple, lorsque le navigateur est minimisé, le js peut s'arrêter, ce qui entraîne une suspension de la réception des données du serveur par le navigateur. Si les données sont empilées dans le tampon pendant une longue période et dépassent la limite, chaque appel à send entraîne l'incrémentation du compteur de send_fail de 1.

Résumé :

Il n'est généralement pas nécessaire de s'inquiéter des send_fail causés par la déconnexion du client.

Si des send_fail se produisent en raison de l'arrêt de la réception des données par le client, il est nécessaire de vérifier si le client fonctionne correctement.

Si la vitesse de réception des données par le client est de manière continue inférieure à la vitesse d'envoi du serveur, il convient d'envisager d'optimiser les processus commerciaux ou d'améliorer les performances du client. Si la bande passante est la cause de l'envoi difficile, il peut être utile d'augmenter la bande passante du serveur.