send_fail durumu hakkında

Phenomenon:

status komutu çalıştırıldığında send_fail durumunun görülmesi durumunda neden kaynaklanmaktadır?

Cevap:

Genellikle send_fail durumu büyük bir sorun değildir. Genellikle istemci tarafından bağlantının kapatılması veya istemcinin veri alamaması nedeniyle veri gönderimi başarısız olur.

send_fail'in iki nedeni vardır:

  1. İstemciye veri göndermek için send arabirimini çağırırken istemcinin zaten bağlantısının kesildiği tespit edilirse, send_fail sayısı bir artar. Bu genellikle istemci tarafından aktif olarak kesildiği için normal bir durumdur ve genellikle ihmal edilebilir.

  2. Sunucu tarafından veri gönderme hızı istemci tarafından alınan hızdan fazla olduğunda, veri sürekli olarak sunucu önbelleğinde birikir (workerman her istemci için bir gönderim önbelleği oluşturur). Eğer önbellek boyutu limit değerini aşarsa (TcpConnection::$maxSendBufferSize varsayılan olarak 1MB), veri atılır, onError etkinliği tetiklenir (varsa) ve send_fail sayısı bir artar.

Örneğin, tarayıcı küçültüldüğünde JavaScript'in çalışması durabilir, bu durumda tarayıcı veri almayı durdurabilir, veri uzun süre önbellekte birikirse, limiti aştığında her send çağrısı send_fail sayısını artırır.

Sonuç:

İstemcinin bağlantısının kesilmesi nedeniyle oluşan send_fail genellikle endişe edilecek bir durum değildir.

Eğer istemcinin veri almayı durdurması nedeniyle send_fail meydana geliyorsa, istemcinin normal olup olmadığını kontrol etmek gereklidir.

Eğer istemci tarafından veri alım hızı sürekli olarak sunucu tarafından gönderim hızından düşükse, işlem akışını optimize etmek veya istemci performansını optimize etmek gereklidir. Eğer bant genişliği gönderimi engelliyorsa sunucu bant genişliğinin artırılması düşünülebilir.