Thời gian chờ kết nối TCP mặc định trong Windows là gì? Có một khóa đăng ký để cấu hình nó hoặc nó được thiết lập động?
Thời gian chờ kết nối TCP mặc định trong Windows là gì? Có một khóa đăng ký để cấu hình nó hoặc nó được thiết lập động?
Câu trả lời:
Trong Windows, giá trị là động đối với các kết hợp đã thiết lập , mặc dù mặc định cho các kết nối ban đầu là 72 giây. Các cài đặt Registry được định nghĩa trong bài viết này:
http://technet.microsoft.com/en-us/l Library / cc739819 (WS.10) .aspx
HKEY_LOCAL_MACHINE \ HỆ THỐNG \ CurrentControlset \ Services: \ Tcpip \ Tham số
TcpInitialRTT : Xác định cài đặt hết thời gian ban đầu là gì cho các kết nối mới. Con số này tính bằng giây được nhân đôi mỗi lần nó truyền lại trước khi hết thời gian kết nối. Mặc định là 3.
TcpMaxConnectRetransmissions : Xác định số lượng truyền lại trước khi hết thời gian kết nối. Mặc định là 5.
Thông thường "thời gian chờ kết nối" đề cập đến thời gian chờ để tạo kết nối ban đầu đến máy chủ. Trong nhiều hệ thống (bao gồm Windows 7), giá trị này được định cấu hình bằng các cài đặt riêng biệt từ thời gian chờ để liên lạc liên tục sau khi kết nối được thiết lập. Câu trả lời này giải quyết kịch bản "kết nối ban đầu" cho Windows 7, khác với XP.
Đối với Windows 7, cần có hai hotfix để hỗ trợ điều chỉnh cài đặt thời gian chờ kết nối. Các cài đặt mới có thể được cấu hình bằng lệnh 'Netsh'.
Từ bài viết hotfix 2786464:
Lưu ý Trong Windows 7 và Windows Server 2008 R2, giá trị truyền lại tối đa TCP (JH: MaxSynRetransmissions) được đặt thành 2 và không thể định cấu hình. Do giới hạn 3 giây của giá trị hết thời gian ban đầu (JH: InitialRTO), bắt tay ba bước TCP bị giới hạn trong khung thời gian 21 giây (3 giây + 2 * 3 giây + 4 * 3 giây = 21 giây ).
Hotfix đầu tiên thêm cài đặt 'MaxSynRetransmmission', cho phép thay đổi cài đặt thử lại từ giá trị mặc định là 2. Cài đặt thứ hai thêm cài đặt 'InitialRto' cho phép thay đổi giá trị RTO ban đầu từ mặc định 3000ms (có, mili giây), nhưng chỉ để một cái gì đó ngắn hơn 3000ms; nó không thể được tăng lên. Tùy thuộc vào tình huống của bạn, bạn chỉ có thể cần hotfix 'MaxSynRetransmissions'.
Cài đặt cả hai hotfix, khởi động lại, sau đó mở một cửa sổ lệnh với tư cách Quản trị viên. Khởi động lại tiếp theo là không cần thiết cho các lệnh lệnh Netsh tiếp theo.
C:\Windows\system32>NET SESSION >nul 2>&1
C:\Windows\system32>IF %ERRORLEVEL% EQU 0 (ECHO Administrator PRIVILEGES Detected!) ELSE ( ECHO NOT AN ADMIN! )
Administrator PRIVILEGES Detected!
C:\Windows\system32>netsh interface tcp show global
Querying active state...
TCP Global Parameters
----------------------------------------------
Receive-Side Scaling State : enabled
Chimney Offload State : automatic
NetDMA State : enabled
Direct Cache Acess (DCA) : disabled
Receive Window Auto-Tuning Level : normal
Add-On Congestion Control Provider : none
ECN Capability : disabled
RFC 1323 Timestamps : disabled
Initial RTO : 3000
Non Sack Rtt Resiliency : disabled
Max SYN Retransmissions : 2
** The above autotuninglevel setting is the result of Windows Scaling heuristics
overriding any local/policy configuration on at least one profile.
C:\Windows\system32>cmd /v:on /c "echo !TIME! & telnet 192.168.1.254 & echo !TIME!"
14:10:30.53
Connecting To 192.168.1.254...Could not open connection to the host, on port 23: Connect failed
14:10:51.60
C:\Windows\system32>netsh interface tcp set global MaxSynRetransmissions=3
Ok.
C:\Windows\system32>netsh interface tcp show global
Querying active state...
TCP Global Parameters
----------------------------------------------
Receive-Side Scaling State : enabled
Chimney Offload State : automatic
NetDMA State : enabled
Direct Cache Acess (DCA) : disabled
Receive Window Auto-Tuning Level : normal
Add-On Congestion Control Provider : none
ECN Capability : disabled
RFC 1323 Timestamps : disabled
Initial RTO : 3000
Non Sack Rtt Resiliency : disabled
Max SYN Retransmissions : 3
** The above autotuninglevel setting is the result of Windows Scaling heuristics
overriding any local/policy configuration on at least one profile.
C:\Windows\system32>cmd /v:on /c "echo !TIME! & telnet 192.168.1.254 & echo !TIME!"
14:27:02.33
Connecting To 192.168.1.254...Could not open connection to the host, on port 23:
Connect failed
14:27:47.41
C:\Windows\system32>netsh interface tcp set global MaxSynRetransmissions=2
Ok.
C:\Windows\system32>netsh interface tcp set global InitialRto=1000
Ok.
C:\Windows\system32>netsh interface tcp show global
Querying active state...
TCP Global Parameters
----------------------------------------------
Receive-Side Scaling State : enabled
Chimney Offload State : automatic
NetDMA State : enabled
Direct Cache Acess (DCA) : disabled
Receive Window Auto-Tuning Level : normal
Add-On Congestion Control Provider : none
ECN Capability : disabled
RFC 1323 Timestamps : disabled
Initial RTO : 1000
Non Sack Rtt Resiliency : disabled
Max SYN Retransmissions : 2
** The above autotuninglevel setting is the result of Windows Scaling heuristics
overriding any local/policy configuration on at least one profile.
C:\Windows\system32>cmd /v:on /c "echo !TIME! & telnet 192.168.1.254 & echo !TIME!"
14:29:06.13
Connecting To 192.168.1.254...Could not open connection to the host, on port 23:
Connect failed
14:29:13.20
Lưu ý: Windows telnet được sử dụng để tham khảo cho thời gian chờ kết nối thực tế. Nó cần phải được cài đặt riêng, nhưng rất dễ làm.
Liên kết bổ sung / danh tiếng:
TcpInitialRTT và TcpMaxConnectRetransmissions có thể không có trong Vista và Windows 2008. Tài liệu này của Microsoft không bao gồm chúng. http://doad.microsoft.com/doad/c/2/6/c26893a6-46c7-4b5c-b287-830216597340/TCPIP_Reg.doc
Và điều này nói rằng ít nhất TcpInitialRTT đã biến mất, mặc dù tôi không biết nó đáng tin cậy như thế nào. http://pul.se/Blog-Post-TCP-IP-Stack-hardening-in-Operating-Systems-starting-with-Windows-Vista_SharePoint-kHPTTCP0WJ5,7zq00hH0wINE
Nếu tôi hiểu chính xác câu hỏi của bạn, bạn đang đề cập đến:
TcpTimedWaitDelay
Khóa này xác định thời gian phải trôi qua trước khi TCP / IP 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 gấp đôi trạng thái vòng đời tối đa (2MSL). Trong thời gian này, việc mở lại kết nối đến máy khách và máy chủ sẽ tốn ít chi phí hơn so với việc thiết lập kết nối mới. Bằng cách giảm giá trị của mục nhập này, TCP / IP có thể giải phóng các kết nối đóng nhanh hơn và cung cấp nhiều tài nguyên hơn cho các kết nối mới. Điều chỉnh tham số này nếu ứng dụng đang chạy yêu cầu giải phóng nhanh, tạo kết nối mới hoặc điều chỉnh do thông lượng thấp gây ra bởi nhiều kết nối ở trạng thái TIME_WAIT.
Khóa chính xác là: HKEY_LOCAL_MACHINE \ HỆ THỐNG \ CurrentControlset \ Tcpip \ Paramameter \ TcpTimedWaitDelay
Bạn có thể không đặt nó nếu bạn đang sử dụng Win2008 trở lên, nhưng mặc định là 240 thập phân (nghĩa là 240 giây hoặc 4 phút). Bạn có thể thêm khóa vào sổ đăng ký với một giá trị khác và nó sẽ có hiệu lực sau khi khởi động lại (được thử nghiệm trên Windows Server 2008R2 trong môi trường sản xuất). Đây là một giá trị cao vô lý với chất lượng của các mạng hiện đại.
Tôi đã có một ứng dụng theo nghĩa đen chưa đầy một tháng trước đang chạy trên một máy chủ đã cạn kiệt số lượng kết nối tối đa mà Windows có thể hỗ trợ và giết mọi dịch vụ mạng trên máy chủ đó thường xuyên. Hơn 16.000 kết nối trong netstat -a khi bạn thậm chí quản lý RDP đến máy chủ. Chúng tôi đặt giá trị thành 30 thập phân (30 giây) và voila, vấn đề đã được giải quyết - chưa đến 10.000 kết nối đồng thời (vì ứng dụng đã nhanh chóng mở và đóng chúng) và không có vấn đề thông lượng.
TcpMaxDataRetransmissions
thành 16 (mặc định là 5), nhưng PuTTY của tôi vẫn giảm các kết nối rất nhanh trong thời gian ngắn, trong khi ssh trên OS X và cùng một mạng giúp chúng hoạt động tốt. superuser.com/questions/529511/