status'daki send_fail nedeni

Belirtiler:

status komutunu çalıştırdığınızda send_fail durumlarıyla karşılaşıyorsunuz, bunun nedeni nedir?

Cevap:

send_fail genellikle büyük bir sorun değildir, genelde istemcinin bağlantıyı aktif olarak kapatması veya istemcinin veri alamaması nedeniyle veri gönderiminin başarısız olmasından kaynaklanır.

send_fail’in iki nedeni vardır:

  1. send arayüzünü kullanarak istemciye veri göndermeye çalışırken istemcinin bağlantısının kesildiği tespit edilirse, send_fail sayacı 1 artar. Bu durum istemcinin aktif olarak bağlantıyı kapatması nedeniyle normal bir durumdur, genelde göz ardı edilebilir.

  2. Sunucunun veri gönderme hızı, istemcinin veri alma hızından daha yüksekse, veriler süreklilikle sunucunun tamponunda birikir (workerman her istemci için bir gönderim tamponu oluşturur). Eğer tampon boyutu sınırı aşarsa (TcpConnection::$maxSendBufferSize varsayılan olarak 1M) veriler atılır, onError olayı tetiklenir (varsa) ve send_fail sayacı 1 artar.

Örneğin, tarayıcı en düşük boyuta küçültüldüğünde JS'in çalışması durabilir, bu da tarayıcının sunucudan veri almasını durdurmasına neden olur. Veriler uzun süre tamponda birikirse, limit aşıldığında her send çağrısı send_fail sayacının 1 artmasına neden olur.

Özet:

İstemci bağlantısının kesilmesi sonucu oluşan send_fail için genellikle endişelenmek gerekmez.

Eğer send_fail istemcinin veri almayı durdurmasından kaynaklanıyorsa, istemcinin düzgün çalışıp çalışmadığını kontrol etmek gerekmektedir.

Eğer istemcinin veri alma hızı sürekli sunucunun gönderme hızından düşükse, iş süreçlerini optimize etmeyi ya da istemci performansını iyileştirmeyi düşünmek gerekir. Eğer bant genişliği gönderimde sorun yaratıyorsa, sunucu bant genişliğini artırmayı düşünebilirsiniz.