Ursachen für send_fail im Status

Phänomen:

Wenn Sie den status-Befehl ausführen und eine send_fail-Situation sehen, was ist der Grund?

Antwort:

Ein send_fail ist in der Regel kein großes Problem. Es liegt normalerweise daran, dass der Client die Verbindung aktiv geschlossen hat oder der Client nicht in der Lage ist, Daten zu empfangen, was zu einem fehlerhaften Datenversand führt.

Es gibt zwei Ursachen für send_fail.

  1. Wenn beim Aufruf der send-Schnittstelle festgestellt wird, dass der Client bereits getrennt ist, erhöht sich der send_fail-Zähler um 1. Da der Client die Verbindung aktiv geschlossen hat, ist dies ein normales Phänomen, das in der Regel ignoriert werden kann.

  2. Wenn die Geschwindigkeit, mit der der Server Daten sendet, schneller ist als die Geschwindigkeit, mit der der Client Daten empfängt, werden die Daten im Serverpuffer (Workerman hat für jeden Client einen Sendepuffer eingerichtet) kontinuierlich aufgestaut. Wenn die Puffergröße das Limit überschreitet (TcpConnection::$maxSendBufferSize standardmäßig 1M), werden die Daten verworfen, was das onError-Ereignis auslöst (wenn vorhanden) und den send_fail-Zähler um 1 erhöht.

Wenn beispielsweise der Browser minimiert wird, kann es sein, dass JavaScript pausiert, was dazu führt, dass der Browser das Empfangen von Daten vom Server stoppt. Die Daten stauen sich über einen längeren Zeitraum im Puffer, und sobald das Limit überschritten wird, erhöht jeder Aufruf von send den send_fail-Zähler um 1.

Zusammenfassung:

send_fail, das durch die Trennung des Clients verursacht wird, muss normalerweise nicht beachtet werden.

Wenn send_fail aufgrund der Tatsache auftritt, dass der Client das Empfangen von Daten stoppt, sollte überprüft werden, ob der Client ordnungsgemäß funktioniert.

Wenn die Geschwindigkeit, mit der der Client Daten empfängt, ständig unter der Geschwindigkeit liegt, mit der der Server Daten sendet, sollten Sie über eine Optimierung des Geschäftsprozesses oder der Client-Leistung nachdenken. Wenn die Bandbreite eine unzureichende Übertragung verursacht, kann es sinnvoll sein, die Bandbreite des Servers zu erhöhen.