Windows zombi tcp bağlantıları nasıl öldürülür?


11

Xp üzerinde beyondtv bağlantı çalıştırıyorum, beyondtv bir vista host bağlanıyor. Bağlantı programı yaklaşık 20 dakika sonra askıda kalır ve bunun için herhangi bir düzeltme var. Bu olduğunda, tcpview kullanarak, ana bilgisayarın Bağlantı bağlantısından kalan yaklaşık 200 zombi tcp bağlantısı olduğunu görüyorum. Onları temizleyemem, onlar aynı olmayan süreçten. Ana bilgisayarı yeniden başlatana kadar bağlantılar takılıyor. Yeniden başlatma, beyondtv Link'i yeniden bağlamayı bulduğum tek yoldur. Bunun ötesinde bir hata olduğunu düşünüyorum, ancak forumlarında cevap alamıyorum. Ama her halükarda, tüm bu bağlantıları öldürmenin bir yolu olup olmadığını bilmek istiyorum.

Düzenleme: aslında yaklaşık 40 dakika sonra biriken yaklaşık 3000 WAIT_CLOSE bağlantı ve yaklaşık o zaman istemci ölür. Eğer sunucu uygulamasını kapatırsam, tüm bu soketler şimdi tcpview içinde -non-existent- işlemine ait olarak gösterilir. Anlaşılabilir. Ancak yeniden başlatmadan bunları kapatmanın bir yolu yok mu?


Burada sorular üzerinde bir ödül kazanmanın bir yolu yok mu? Bunun için bir düğme görmüyorum.
P aul

soru 2 gün geçtikten sonra bir ödül sunabilirsiniz: superuser.com/faq
quack quixote

3
Ateş. Ateş veya av tüfeği.
Phoshi

1
@ phoshi: ya da yörüngeden çek. emin olmanın tek yolu bu.
quack quixote

Yanıtlar:


10

Bağlantıları izlemek ve öldürmek için Nirsoft Currports'u kullanabilirsiniz .

AutoHotKey'i kullanarak bir bağlantı deseninin öldürülmesini otomatikleştirebilirsiniz.


7

CLOSE_WAIT, bağlantının diğer uçta kapalı olduğu anlamına gelir.

Belli ki, beyondtv bu durumu tespit etmiyor ve diğer taraftan uygulamaya veri göndermeye devam ediyor. Diğer uç, bağlantının sonunu kapattığı için bu bağlantı üzerinden bir şey geri gönderemez.

Çözüm, TcpTimedWaitDelay girişini

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\tcpip\Parameters

Bu girdi, TCP'nin kapalı bir bağlantıyı serbest bırakıp kaynaklarını yeniden kullanabilmesi için geçmesi gereken süreyi belirler. Kapatma ve serbest bırakma arasındaki bu aralık TIME_WAIT durumu veya 2MSL durumu olarak bilinir. Bu süre zarfında bağlantı, istemci ve sunucu için yeni bir bağlantı kurmaktan çok daha düşük maliyetle yeniden açılabilir.

Makinemde varsayılan olarak, bu -1 değerini içerir, bu da kapalı bağlantıların asla serbest bırakılmadığı anlamına gelir, bu da tam olarak gözlemlediğiniz davranıştır.

Bu girişin değerini izin verilen 30–300 saniye aralığında ayarlamanızı öneririz. Sanırım 300 saniye = 5 dakika davanız için tamamen yeterli, burada bilgisayarınızı dondurmanız 40 dakika sürüyor.


Aramak TIME_WAITbeni buraya getirdi. Açıklama ve bağlantı için teşekkürler.
Technext

merhaba, açıklama için teşekkürler. Hala TCP bağlantılarını kapatmıyor. CLOSE_WAIT artıyor. Zaman
Aşımı'nı

1

Windows'u 1) devre dışı bırakarak , ardından 2) ağ arayüzünüzü yeniden etkinleştirerek tüm TCP bağlantılarını zorla kapatmaya zorlayabilirsiniz . Bu işe yararsa, gerektiğinde yürütme adımlarını toplu olarak komut dosyası oluşturabilirsiniz.

Bunu bir şekilde komut satırı aracılığıyla, netshyardımcı programdan (veya benzeri) yapmak için uğraştım, ancak şimdiye kadar hiç şansım olmadı.

Tabii ki, bunu düzeltmenin en iyi yolu kırık uygulamayı düzeltmektir. Uygulamanın en son sürümünü denediğinizden emin olun; geliştiricileri rahatsız etmek; zaten en son sürüme sahipseniz, programın eski bir sürümünü bulmayı deneyin.


Uygulamayı en son sürüme güncelledim, yardım etmedim ve onlarla birlikte bir destek biletim var. Ağ özelliklerinde devre dışı bırakmaya çalıştım ve ayrıca cihaz yöneticisinde kaldırdım ve WAIT_CLOSE bağlantılarının listesi etkilenmedi. Bu işletim sistemi içinde dokunamıyorum bir yerde bir liste gibi görünüyor.
P aul

1

Programın askıda olması nedeniyle muhtemelen bu CLOSE_WAIT oturumlarını alıyorsunuz - neden olarak şüpheli olup olmadığınızı anlayamıyorum, bu yüzden bunu açıkça belirtmek istedim.

Tahminimce sonsuza kadar takılmayacaklar; muhtemelen sadece 2 saat 5 saniye. Sonsuza dek gibi görünebilir, biliyorum. Ağ bağlantınız için KeepAliveTime'ı (muhtemelen son bir yeniden başlatma gerektirir) 5 dakika gibi küçük bir şeye ayarlamayı deneyebilirsiniz . Bu , programınız askıya alındıktan sonra daha hızlı kaybolmalarına yardımcı olabilir .

Veya programı bir seferde 10 dakika boyunca güvenilir bir şekilde çalıştırabileceğinizi biliyorsanız, periyodik olarak yeniden başlatabilirsiniz. Bu çözümlerden herhangi birinin sizin durumunuz için yararlı olup olmadığını bilmiyorum; ~ Quack ile sorunlu uygulama sürümünü mümkün olan en kısa sürede terk etmeniz gerektiğini kabul ediyorum.


Programın KeepAliveTime parametresindeki sistem ayarını geçersiz kılmalarına izin verildiğini düşünüyorum, bu yüzden yardımcı olmayabilir, ancak denemeye değer olabileceğini kabul ediyorum. bunun yapılması diğer uygulamalarda sorunlara yol açabilir.
quack quixote

0

Beyondtv'nin bağlantıları açık tutan başka bir işlem yapıp yapmadığını görün. İşlem Gezgini bunun olup olmadığını gösterir.


Ek işlemler bulamıyorum. Beyondtv ve onun ilgili tüm süreçleri kapatmanın bir etkisi yoktur. Bu bağlantılar, işlem için <varolmayan> ile görünür. İşlemden çıkıldı ancak bağlantılar kapanmıyor.
P aul

Yanıt derecelendirme yukarı / aşağı düğmeleriyle oynuyordum ve 0'a geri dönmenin bir yolu yok, -1 ya da 1'dir, bu yüzden 1'de bıraktım. bu cevap yararlı değil - bu soruyu göndermeden önce bir süre süreç gezgini ve tcpview kullandım.
P aul

0

Güvenlik duvarı sorunu olabilir mi? Tamamlanmamış bir bağlantı denenip yeniden deneniyor olabilir.

Her iki makinedeki tüm güvenlik duvarlarını devre dışı bırakardım ve bir yönlendirici varsa dahili güvenlik duvarı da.


Bunu daha önce de yaptım. Senaryoyu yeniden düzenleyin, etkisi yok, sorun devam ediyor. Linksys yönlendiriciye bakıyorum, ancak araştıracağım.
P aul

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.