SQL Server’da RECEIVE_NETWORK_PACKET bekleme tipi, az önce konuştuğumuz ASYNC_NETWORK_IO’nun tam tersi istikamette çalışır. Burada SQL Server veriyi göndermeye çalışmıyor; aksine istemciden (uygulama, kullanıcı veya başka bir sunucu) gelecek bir paketi/komutu bekliyor.
SQL Server bir sorguyu işleyip bitirdiğinde, bir sonraki adımı atmak için uygulamadan gelecek olan sinyali bekler. Eğer uygulama, bağlantıyı açık tuttuğu halde yeni bir istek göndermiyorsa veya ağ üzerinden gönderdiği paket sunucuya ulaşmakta gecikiyorsa, SQL Server boşta kalır ve bu süreyi RECEIVE_NETWORK_PACKET olarak kaydeder.
Bu bekleme tipi genellikle “masumdur” ancak şu durumlarda performansı etkileyebilir:
Uygulama Tarafındaki İş Mantığı: Uygulama bir bağlantı açar, bir SELECT çalıştırır, veriyi alır ama bağlantıyı kapatmadan (veya yeni sorgu göndermeden) kendi içinde uzun bir hesaplama yapmaya başlar. SQL Server bu esnada “Sıradaki paket ne zaman gelecek?” diye bekler.
Ağ Gecikmesi (Network Latency): İstemci ile sunucu arasındaki fiziksel mesafe uzaksa veya ağda yüksek paket kaybı/gecikme varsa, paketlerin sunucuya ulaşması zaman alır.
Hatalı Bağlantı Yönetimi: Connection Pooling (Bağlantı Havuzu) düzgün yönetilmeyen uygulamalarda, açık kalan ama işlem yapmayan (idle) bağlantılar bu beklemeyi biriktirir.
ASYNC_NETWORK_IO: Siz telefonda konuşuyorsunuz ama karşıdaki kişi sizi dinlerken sürekli “Dur yavaş söyle, not alıyorum” diyor. (Siz bekliyorsunuz).
RECEIVE_NETWORK_PACKET: Siz telefonu açtınız, karşı tarafın bir şey söylemesini bekliyorsunuz ama karşıdan ses gelmiyor ya da hat cızırtılı olduğu için ses geç geliyor.
- Genellikle bu bekleme tipi toplam beklemeler arasında yüksek görünür çünkü kullanıcıların SQL Management Studio’yu (SSMS) açık bırakıp kahve içmeye gitmesi bile bu sayacı artırır. Ancak şu durumlarda müdahale gerekir:
- Uygulama yanıt süreleri uzadıysa: Ağdaki paket boyutunu (Network Packet Size) kontrol etmek gerekebilir. Varsayılan değer 4096 byte’tır; bazen büyük veri transferleri için bu değeri 8192’ye çıkarmak performansı artırabilir.
- “Zombi” bağlantılar fazlaysa: sys.dm_exec_sessions üzerinden boşta bekleyen ama kaynak tüketen oturumları sonlandırmak gerekebilir.
Başka makalede görüşmek dileğiyle..
Emanetlerinizi ve sözlerinizi tutun. Müminun-8
