Làm thế nào để giết các kết nối cửa sổ zombie tcp?


11

Tôi đang chạy liên kết beyondtv trên xp, kết nối với beyondtv một máy chủ vista. Chương trình Liên kết bị treo sau khoảng 20 phút và tôi không khắc phục được vấn đề này. Khi điều này xảy ra, sử dụng tcpview, tôi thấy rằng máy chủ lưu trữ có khoảng 200 kết nối tcp zombie còn sót lại từ kết nối Liên kết. Tôi không thể xóa chúng, chúng đến từ cùng một quá trình không tồn tại. Các kết nối treo xung quanh cho đến khi tôi khởi động lại máy chủ. Khởi động lại là cách duy nhất tôi tìm thấy để kết nối lại Beyondtv Link. Tôi nghĩ rằng có một lỗi trong beyondtv gây ra điều này, nhưng tôi không thể nhận được bất kỳ câu trả lời nào trên diễn đàn của họ. Nhưng với bất kỳ giá nào, tôi muốn biết liệu có cách nào để giết tất cả các kết nối đó không.

Chỉnh sửa: thực sự có khoảng 3000 kết nối WAIT_CLOSE tích lũy sau khoảng 40 phút và sau đó máy khách sẽ chết. Nếu tôi đóng ứng dụng máy chủ, tất cả các ổ cắm này hiện hiển thị là thuộc sở hữu của quy trình tồn tại trong tcpview. Có thể hiểu được. Nhưng không có cách nào để đóng chúng mà không cần khởi động lại?


Không có cách nào để bắt đầu một tiền thưởng cho các câu hỏi ở đây? Tôi không thấy một nút cho điều đó.
P

bạn có thể cung cấp tiền thưởng sau khi câu hỏi được đưa ra trong 2 ngày: superuser.com/faq
quack quixote

3
Ngọn lửa. Bắn hoặc một khẩu súng ngắn.
Phoshi

1
@phoshi: hoặc nuke nó từ quỹ đạo. đó là cách duy nhất để chắc chắn
quack quixote

Câu trả lời:


10

Bạn có thể sử dụng Currports của Nirsoft để theo dõi và hủy kết nối.

Bạn có thể tự động hủy bỏ kiểu kết nối bằng AutoHotKey.


7

CLOSE_WAIT có nghĩa là kết nối đã bị đóng ở đầu bên kia.

Rõ ràng, beyondtv không phát hiện ra tình trạng này và tiếp tục gửi dữ liệu đến ứng dụng ở đầu bên kia. Đầu kia không thể gửi lại bất cứ điều gì qua kết nối này, vì nó đã đóng kết thúc của kết nối.

Giải pháp là đặt mục nhập TcpTimedWaitDelay trong

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\tcpip\Parameters

Mục này xác định thời gian phải trôi qua trước khi TCP có thể giải phóng một kết nối kín và sử dụng lại tài nguyên của nó. Khoảng thời gian giữa đóng và phát hành này được gọi là trạng thái TIME_WAIT hoặc trạng thái 2MSL. Trong thời gian này, kết nối có thể được mở lại với chi phí thấp hơn nhiều cho khách hàng và máy chủ so với việc thiết lập kết nối mới.

Theo mặc định trên máy của tôi, giá trị này chứa giá trị -1, nghĩa là các kết nối đóng không bao giờ được phát hành, đó chính xác là hành vi mà bạn đang quan sát.

Tôi khuyên bạn nên đặt giá trị của mục nhập này trong phạm vi cho phép là 30 Tháng 300 giây. Tôi cho rằng 300 giây = 5 phút là hoàn toàn đủ cho trường hợp của bạn, trong đó phải mất 40 phút để đóng băng máy tính của bạn.


Tìm kiếm TIME_WAITđã đưa tôi đến đây. Cảm ơn đã giải thích và liên kết.
Technext

chào, cảm ơn đã giải thích Nó vẫn không đóng kết nối TCP. CLOSE_WAIT tăng. Tôi đã đặt Thời gian chờ là 30 giây
aadi1295

1

Bạn có thể buộc Windows đóng tất cả các kết nối TCP bằng cách 1) vô hiệu hóa , sau đó 2) bật lại giao diện mạng của bạn. Nếu nó hoạt động, bạn có thể tập lệnh bó các bước để thực hiện khi cần.

Tôi đã tìm kiếm một số cách để làm điều này thông qua dòng lệnh, từ netshtiện ích (hoặc tương tự), nhưng cho đến nay tôi đã không gặp may mắn.

Tất nhiên, cách tốt nhất để khắc phục điều này là sửa ứng dụng bị hỏng. Đảm bảo bạn đang dùng thử phiên bản mới nhất của ứng dụng; tiếp tục làm phiền các nhà phát triển; nếu bạn đã ở phiên bản mới nhất, hãy thử định vị phiên bản cũ hơn của chương trình.


Tôi đã cập nhật ứng dụng lên phiên bản mới nhất, không giúp được gì và tôi có một vé hỗ trợ với họ. Tôi đã cố gắng vô hiệu hóa các thuộc tính mạng và cũng đã gỡ cài đặt trong trình quản lý thiết bị và danh sách các kết nối WAIT_CLOSE không bị ảnh hưởng. Đây là một danh sách ở đâu đó trong HĐH mà tôi không thể chạm vào.
P aul

1

Có lẽ bạn đang nhận được các phiên CLOSE_WAIT này do chương trình bị treo - Tôi không thể biết liệu bạn có nghi ngờ chúng là nguyên nhân hay không, vì vậy chỉ muốn làm rõ điều đó.

Tôi đoán là họ sẽ không quanh quẩn mãi mãi; có lẽ chỉ trong 2 giờ 5 giây. Có vẻ như mãi mãi, tôi biết. Bạn có thể thử điều chỉnh KeepAliveTime (có thể yêu cầu một lần khởi động lại cuối cùng) cho kết nối mạng của bạn xuống một cái gì đó nhỏ, như 5 phút. Điều đó có thể giúp họ biến mất nhanh hơn, sau khi chương trình của bạn bị treo.

Hoặc nếu bạn biết bạn có thể chạy chương trình một cách đáng tin cậy, giả sử, 10 phút một lần, bạn có thể khởi động lại định kỳ. Không biết liệu có bất kỳ giải pháp nào hữu ích cho tình huống cụ thể của bạn không; Tôi đồng ý với ~ quack rằng bạn nên bỏ phiên bản ứng dụng có vấn đề càng sớm càng tốt.


Tôi nghĩ rằng chương trình được phép ghi đè cài đặt hệ thống trên tham số KeepAliveTime, vì vậy nó có thể không giúp ích gì, nhưng tôi đồng ý rằng nó có thể đáng để thử. điều chỉnh nó có thể dẫn đến các vấn đề với các ứng dụng khác, tuy nhiên.
quack quixote

0

Xem nếu beyondtv đang sinh ra một quá trình khác đang giữ các kết nối mở. Process Explorer sẽ chỉ cho bạn nếu điều này xảy ra.


Tôi không thể tìm thấy bất kỳ quá trình bổ sung. Đóng beyondtv và tất cả các quy trình liên quan của nó không có hiệu lực. Các kết nối này xuất hiện với <không tồn tại> cho quy trình. Quá trình đã thoát nhưng các kết nối sẽ không đóng.
P

Tôi đã chơi với các nút tăng / giảm xếp hạng câu trả lời và không có cách nào để trở về 0, đó là -1 hoặc 1 vì vậy tôi để nó ở mức 1. Sẽ tốt hơn nếu có câu hỏi này với 0 câu trả lời tại thời điểm này Câu trả lời này không hữu ích - Tôi đã sử dụng process explorer và tcpview một thời gian trước khi đăng câu hỏi này.
P

0

Có thể có một vấn đề tường lửa? Nó có thể là một kết nối không đầy đủ đang được thử và thử lại.

Tôi sẽ vô hiệu hóa tất cả các tường lửa trên cả hai máy và nếu có bộ định tuyến cũng là tường lửa bên trong của nó.


Tôi cũng đã làm điều đó trước đây. Chạy lại kịch bản, không có hiệu lực, vấn đề vẫn còn. Tôi đang xem xét các bộ định tuyến linksys, tuy nhiên, tôi sẽ điều tra.
P aul

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.