Kuyruklar ve yavaş istemci
Adet, byte ve süre sınırlarını ayrı yapılandırın; yavaş alıcının ve yoğun göndericinin sonuçlarını görünür kılın.
Backpressure, sınırlı kaynak varken yeni verinin nasıl kabul edildiğini belirler. Lily inbound bekleme, outbound kuyruk kabulü ve socket yazımına ayrı sınırlar uygular.
Inbound bekleme#
Bağlantı başına tek normal action çalışır. Tamamlanmış application mesajları bunun arkasında varsayılan 16 mesaj ve 1 MiB toplam payload sınırıyla bekler. Aktif action bu bekleyen toplamın parçası değildir. Sınır aşılırsa policy Close seçilir ve aktif execution durdurulmaya çalışılır.
Reader'ın Ping/Pong/Close işlemleri ayrı ilerler. Normal shutdown'da bekleyen inbound application mesajları atılır; zaten seçilmiş action drain fırsatı alır. Mesaj yaşam döngüsü bu kabul eşiğini anlatır.
Outbound kabul#
use lilyrs::websocket::ServerConfig;
let policy = ServerConfig {
inbound_queue_capacity: 16,
inbound_queue_max_bytes: 1_048_576,
outbound_queue_capacity: 256,
outbound_queue_max_bytes: 1_048_576,
outbound_admission_timeout_millis: 5_000,
write_timeout_millis: 5_000,
..ServerConfig::default()
};Policy'yi Origin ve diğer uygulama ayarlarınızla birlikte oluşturun. .config(policy) whole-object seçimidir. Bunlar incelenen sürümün default'larıdır; yükünüz için kapasite önerisi değildir.
Outbound byte rezervasyonu count slot'u beklerken, kuyrukta ve write/flush sırasında tutulur; dequeue ile hemen serbest kalmaz. Varsayılan tek encoded application mesajı cap'i 1 MiB'dır. Protokol control frame'leri ayrı öncelik/yetki yolunu kullanır.
Yavaş alıcı#
Admission timeout dolarsa 1013, lily.v2.slow_consumer Close'u denenir. Transport tıkalıysa Close'un peer'a ulaşması garanti değildir. Send yine başarısız/backpressured olarak raporlanır. Admission beklemek ile write/flush beklemek farklı bütçelerdir.
Broadcast alıcı admission'ları eşzamanlı ilerleyebilir; sağlıklı alıcı yavaş alıcının arkasında sıraya girmek zorunda değildir. Çağrının bütün alıcıları anında tamamlayacağı anlamına gelmez. Kısmi receipt ve retry politikanızı buna göre ele alın.
Byte türlerini ayırın#
Varsayılan inbound frame 256 KiB, reassembled mesaj 1 MiB'dır. Write buffer threshold 128 KiB, ceiling 2 MiB'dır; ceiling threshold'dan büyük olmalı ve outbound mesaj ile server frame header'ını sığdırmalıdır.
send_binary JSON envelope'u Binary frame'e koyar. BinaryPayload typed byte içeriğidir ve varsayılan codec'te base64 taşınır. Binary desteği hazır file upload/chunk/resume/storage API'si değildir. Dosya için HTTP upload ve streaming ya da açık bir uygulama protokolü seçin.
Bu limitler toplam RSS garantisi vermez; uygulama callback belleği, TLS buffer'ları ve retained nesneler ayrıca kaynak kullanır. Diğer sabit sınırlar referansta listelenir.
Bu sayfanın kaynakları v0.1.0
Anlatım, incelenen framework commit’ine dayanır.