Motivi di send_fail nello stato

Fenomeno:

Eseguendo il comando status, si osserva la presenza di situazioni di send_fail. Qual è la causa?

Risposta:

Avere send_fail di solito non è un grosso problema; generalmente è causato dalla chiusura attiva della connessione da parte del client o dall'impossibilità del client di ricevere dati, che porta al fallimento dell'invio dei dati.

Le cause di send_fail possono essere due:

  1. Quando si chiama l'interfaccia send per inviare dati al client e si scopre che il client è già disconnesso, il conteggio di send_fail aumenta di 1. Poiché si tratta di una disconnessione attiva da parte del client, è considerato un fenomeno normale e può essere generalmente ignorato.

  2. La velocità con cui il server invia dati è maggiore rispetto alla velocità con cui il client riceve i dati, portando a un accumulo costante di dati nel buffer del server (workerman ha creato un buffer di invio per ogni client). Se la dimensione del buffer supera il limite (TcpConnection::$maxSendBufferSize è di default 1M), i dati verranno scartati, causando l'attivazione dell'evento onError (se presente) e aumentando il conteggio di send_fail di 1.

Ad esempio, dopo che il browser è stato minimizzato, il JavaScript potrebbe interrompere l'esecuzione, causando il blocco del browser nella ricezione dei dati dal server. I dati si accumulano nel buffer per un lungo periodo e, quando si supera il limite, ogni volta che si chiama send, il conteggio di send_fail aumenterà di 1.

Riepilogo:

Non c'è motivo di preoccuparsi per i send_fail causati dalla disconnessione del client.

Se i send_fail sono causati dalla cessazione della ricezione dei dati da parte del client, è necessario verificare che il client funzioni correttamente.

Se la velocità di ricezione dei dati da parte del client è costantemente inferiore alla velocità di invio del server, è necessario considerare di ottimizzare il processo aziendale o migliorare le prestazioni del client. Se la banda passante è la causa della lenta trasmissione dei dati, si può considerare di aumentare la banda passante del server.