วิธีฆ่าการเชื่อมต่อ tcp windows zombie?


11

ฉันใช้การเชื่อมต่อ Beyondtv กับ XP เชื่อมต่อกับ BeyondTV ซึ่งเป็นโฮสต์ vista โปรแกรมลิงก์หยุดทำงานหลังจากนั้นประมาณ 20 นาทีและฉันก็ไม่สามารถแก้ไขได้ เมื่อสิ่งนี้เกิดขึ้นโดยใช้ tcpview ฉันเห็นว่าโฮสต์มีการเชื่อมต่อ tcp zombie ประมาณ 200 ตัวที่เหลือจากการเชื่อมต่อ Link ฉันไม่สามารถล้างพวกเขาพวกเขามาจากกระบวนการที่ไม่มีอยู่จริงเดียวกัน การเชื่อมต่อไปรอบ ๆ จนกว่าฉันจะรีบูตโฮสต์ การรีบูตเครื่องเป็นวิธีเดียวที่ฉันได้พบว่าเชื่อมต่อ BeyondTV Link อีกครั้ง ฉันคิดว่ามีข้อผิดพลาดใน BeyondTV ที่เป็นสาเหตุของเรื่องนี้ แต่ฉันไม่สามารถรับคำตอบใด ๆ ในฟอรัมของพวกเขา แต่ไม่ว่าจะด้วยวิธีใดฉันก็อยากจะรู้ว่ามันมีวิธีฆ่าความสัมพันธ์เหล่านั้นหรือไม่

แก้ไข: จริง ๆ แล้วประมาณ 3000 WAIT_CLOSE การเชื่อมต่อสะสมหลังจากประมาณ 40 นาทีและลูกค้าตาย ถ้าฉันปิดแอปเซิร์ฟเวอร์ตอนนี้ซ็อกเก็ตทั้งหมดจะแสดงเป็นเจ้าของโดยกระบวนการ -non-existent- ใน tcpview เข้าใจได้ แต่ไม่มีวิธีปิดพวกเขาโดยไม่ต้องรีบูตหรือไม่


ไม่มีวิธีใดในการเริ่มต้นรับรางวัลกับคำถามที่นี่หรือ ฉันไม่เห็นปุ่มสำหรับสิ่งนั้น
P aul

คุณสามารถเสนอเงินรางวัลหลังจากที่คำถามใช้งานได้ถึง 2 วัน: superuser.com/faq
quack quixote

3
ไฟ. ไฟหรือปืนลูกซอง
Phoshi

1
@phoshi: หรือ nuke จากวงโคจร มันเป็นวิธีเดียวที่จะแน่ใจ
ต้มตุ๋น quixote

1
ฉันชอบที่จะฆ่าฉันด้วยวิธีการลงโทษ: superuser.com/questions/54937/3d-windows-managers/55130#55130
DaveParillo

คำตอบ:


10

คุณสามารถใช้Currportsของ Nirsoft เพื่อตรวจสอบและฆ่าการเชื่อมต่อ

คุณสามารถฆ่ารูปแบบการเชื่อมต่อโดยอัตโนมัติโดยใช้ AutoHotKey


7

CLOSE_WAIT หมายความว่าการเชื่อมต่อถูกปิดในส่วนอื่น ๆ

เห็นได้ชัดว่า BeyondTV ไม่ตรวจพบเงื่อนไขนี้และยังคงส่งข้อมูลไปยังแอปพลิเคชันในส่วนอื่น ๆ ปลายอีกด้านหนึ่งไม่สามารถส่งอะไรกลับไปที่การเชื่อมต่อนี้ได้เนื่องจากมันได้ปิดปลายการเชื่อมต่อ

วิธีแก้ไขคือตั้งค่ารายการTcpTimedWaitDelay

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\tcpip\Parameters

รายการนี้กำหนดเวลาที่ต้องผ่านไปก่อนที่ TCP จะปล่อยการเชื่อมต่อที่ปิดและนำทรัพยากรกลับมาใช้ใหม่ ช่วงเวลาระหว่างการปิดและการเปิดตัวนี้เรียกว่าสถานะ TIME_WAIT หรือสถานะ 2MSL ในช่วงเวลานี้การเชื่อมต่อสามารถเปิดใหม่ได้ในราคาที่ถูกกว่าสำหรับลูกค้าและเซิร์ฟเวอร์มากกว่าการสร้างการเชื่อมต่อใหม่

ตามค่าเริ่มต้นบนเครื่องของฉันค่านี้มีค่า -1 ซึ่งฉันหมายถึงว่าการเชื่อมต่อที่ปิดจะไม่ถูกปล่อยออกมาซึ่งเป็นพฤติกรรมที่คุณสังเกตเห็น

ฉันขอแนะนำให้คุณตั้งค่าของรายการนี้ในช่วงที่อนุญาต 30–300 วินาที ฉันคิดว่า 300 วินาที = 5 นาทีนั้นเพียงพอสำหรับกรณีของคุณซึ่งใช้เวลา 40 นาทีในการตรึงคอมพิวเตอร์ของคุณ


กำลังค้นหาTIME_WAITพาฉันมาที่นี่ ขอบคุณสำหรับคำอธิบายและลิงค์
เทคนิค

สวัสดีขอบคุณสำหรับคำอธิบาย มันยังไม่ปิดการเชื่อมต่อ TCP CLOSE_WAIT เพิ่มขึ้น ฉันได้ตั้งค่าการหมดเวลาเป็น 30 วินาที
aadi1295

1

คุณอาจบังคับให้ Windows ปิดการเชื่อมต่อ TCP ทั้งหมดโดย 1) ปิดใช้งานและ 2) เปิดใช้งานอินเทอร์เฟซเครือข่ายของคุณอีกครั้ง หากใช้งานได้คุณสามารถแบตช์สคริปต์ขั้นตอนในการดำเนินการเมื่อจำเป็น

ฉันแหย่หาวิธีทำผ่าน commandline จากnetshยูทิลิตี้ (หรือคล้ายกัน) แต่ฉันไม่ได้โชคดี

แน่นอนวิธีที่ดีที่สุดในการแก้ไขปัญหานี้คือการแก้ไขแอปพลิเคชันที่เสียหาย ตรวจสอบให้แน่ใจว่าคุณกำลังลองแอปพลิเคชันเวอร์ชันล่าสุด ติดตามนักพัฒนาต่อไป หากคุณอยู่ในเวอร์ชันล่าสุดให้ลองค้นหาโปรแกรมรุ่นที่เก่ากว่า


ฉันอัปเดตแอปเป็นเวอร์ชันล่าสุดแล้วไม่ได้ช่วยอะไรฉันมีตั๋วช่วยเหลืออยู่ด้วย ฉันพยายามปิดการใช้งานในคุณสมบัติเครือข่ายและถอนการติดตั้งในตัวจัดการอุปกรณ์และรายการการเชื่อมต่อ WAIT_CLOSE ไม่ได้รับผลกระทบ นี่คือรายการหนึ่งในระบบปฏิบัติการที่ฉันไม่สามารถสัมผัสได้
P aul

1

คุณอาจได้รับเซสชัน CLOSE_WAIT เหล่านี้เนื่องจากโปรแกรมหยุดทำงาน - ฉันไม่สามารถบอกได้ว่าคุณสงสัยว่าเป็นสาเหตุหรือไม่ดังนั้นจึงต้องการทำให้ชัดเจน

ฉันเดาว่าพวกเขาจะไม่ไปไหนตลอดกาล อาจเป็นเพียง 2 ชั่วโมงและ 5 วินาที ฉันสามารถดูเหมือนตลอดไปฉันรู้ คุณสามารถลองปรับ KeepAliveTime (อาจต้องรีบูตครั้งสุดท้ายครั้งเดียว) สำหรับการเชื่อมต่อเครือข่ายของคุณลงไปเป็นสิ่งเล็ก ๆ เช่น 5 นาที ซึ่งอาจช่วยให้หายเร็วขึ้นหลังจากที่โปรแกรมของคุณหยุดทำงาน

หรือถ้าคุณรู้ว่าคุณสามารถรันโปรแกรมได้อย่างน่าเชื่อถือสำหรับพูดครั้งละ 10 นาทีคุณก็สามารถเริ่มใหม่ได้เป็นระยะ ๆ ไม่ทราบว่าโซลูชันเหล่านี้มีประโยชน์สำหรับสถานการณ์เฉพาะของคุณหรือไม่ ฉันเห็นด้วยกับ ~ ต้มตุ๋นที่คุณควรทิ้งเวอร์ชันแอปที่มีปัญหาโดยเร็วที่สุด


ฉันคิดว่าโปรแกรมได้รับอนุญาตให้แทนที่การตั้งค่าระบบในพารามิเตอร์ KeepAliveTime ดังนั้นจึงอาจไม่ช่วยได้ แต่ฉันยอมรับว่าอาจคุ้มค่าที่จะลอง อย่างไรก็ตามการปรับแต่งอาจทำให้เกิดปัญหากับแอปพลิเคชั่นอื่น ๆ
ต้มตุ๋น Quixote

0

ดูว่า BeyondTV กำลังวางไข่กระบวนการอื่นที่เปิดการเชื่อมต่อไว้หรือไม่ Process Explorer จะแสดงให้คุณเห็นหากสิ่งนี้เกิดขึ้น


ฉันไม่พบกระบวนการเพิ่มเติมใด ๆ การปิดทีวีเกินและกระบวนการที่เกี่ยวข้องทั้งหมดไม่มีผลกระทบ การเชื่อมต่อเหล่านี้ปรากฏขึ้นพร้อมกับ <non-existent> สำหรับกระบวนการ กระบวนการออกจากการเชื่อมต่อ แต่จะไม่ปิด
P aul

ฉันกำลังเล่นกับปุ่มจัดอันดับคำตอบขึ้น / ลงและไม่มีทางกลับไปที่ 0 ได้ทั้ง -1 หรือ 1 ดังนั้นฉันทิ้งไว้ที่ 1 มันจะดีกว่าถ้ามีคำถามนี้ที่มีคำตอบ 0 ข้อตั้งแต่นี้ คำตอบนี้ไม่เป็นประโยชน์ - ฉันใช้ process explorer และ tcpview สักครู่ก่อนโพสต์คำถามนี้
P aul

0

เป็นไปได้ไหมว่ามีปัญหาไฟร์วอลล์ อาจเป็นการเชื่อมต่อที่ไม่สมบูรณ์กำลังพยายามและลองใหม่

ฉันจะปิดการใช้งานไฟร์วอลล์ทั้งหมดในเครื่องทั้งสองเครื่องและหากเราเตอร์มีไฟร์วอลล์ภายในเช่นกัน


ฉันก็เคยทำมาก่อน รันเหตุการณ์อีกครั้งโดยไม่มีผลกระทบปัญหายังคงอยู่ ฉันกำลังดูเราเตอร์ linksys อย่างไรก็ตามฉันจะตรวจสอบ
P aul

0

ลองแก้ไข WinSock XP

http://www.snapfiles.com/get/winsockxpfix.html

มันทำให้การเชื่อมต่อของคุณล้มเหลวและรีเซ็ตเป็นค่าเริ่มต้น ฉันมักจะเก็บมันไว้ในไดรฟ์หัวแม่มือเมื่อทุกอย่างล้มเหลว

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.