2017-03-20 2 views
1
나는 내가 다른 작업

완전히 종료하는 방법 HttpWebRequest를

내가

를 참조

를 시작하여 200 개 개의 동시 연결을 열 때 그들은 예를 들어

종료되지 않은 참조 기존 HTTP 연결을 검사 할 때 내가 제대로 모든 것을 종료하고 있지만

158 Established HTTP connections 
927 TimeWait 
95 SynSent 
24 LastAck 
6 CloseWait 
34 FinWait 

더 나쁜 부분은 시간 대기의 수는 내가 그런는 방지 할 수있는 방법

그래서 각 분 계속 증가한다 일어날 작정? 내가 웹 프록시를 사용하는 경우 Windows가 새 요청을 할 수 없게 잠시 후

이 문제가 발생합니다 : 내가 다른 프록시 200 개 연결을 사용하는 경우 다음 Too many proxy connection kills window's resolving hosts ability

enter image description here

답변

1

TimeWait 상태의 연결로 인해 성능 문제가 발생할 수 있습니다.

우선,이 피어로부터 수신 FIN 세그먼트에 응답하여 ACK 세그먼트를 송신 한 기기의 TCP 후 TCP 연결의 상태 TCP 상태도에서 살펴,

https://en.wikipedia.org/wiki/File:Tcp_state_diagram_fixed_new.svg

걸릴 (1981 년에 TCP를 정의한 RFC 793의 세부 사항 http://www.ietf.org/rfc/rfc793.txt). 이 상태 동안 TCB (TCP 제어 블록) 및 포트를 포함한 소켓 리소스는 OS로 릴리스되지 않습니다. 제한 시간이 만료되면 소켓 리소스가 OS로 릴리스됩니다. 원래의 이유는 신뢰할 수없는 매체에서 동료간에 발생할 수있는 Two Generals 문제를 다루는 것입니다. 구성 가능한 시간 초과가 운영 체제에 종속 된 기본값을 가질 때까지 연결은 TimeWait에 있습니다.

이 링크는 Windows에서 TcpTimedWaitDelay를 매개 변수를 설정하는 데 도움이 될 수 있습니다 : 그것은 기본값은 240 초입니다 말합니다

https://technet.microsoft.com/en-us/library/cc938217.aspx http://msdn.microsoft.com/en-us/library/ee377084%28v=bts.10%29.aspx

을하지만 난 (60) 사이에 낮은 번 (경험이 내 검사를 해요 120).

어쨌든 오늘날 네트워크는보다 안정적이며 높은 성능과 처리량이 필요한 웹 서비스는이 값을 줄여야합니다. 5 초로 설정하는 것이 좋습니다. 좀 더 보수적으로하고 싶다면 30 초로 설정하십시오.

다른 유용한 매개 변수는 Windows에서 클라이언트가 열 수있는 임시 포트의 최대 수입니다. 기본적으로 Windows Server는 임시 TCP 포트의 최대 수를 제한합니다. 일부 Windows에서는이 값이 5000이 될 수 있습니다. MaxUserPort 값을 레지스트리에 설정하여이 동작을 변경할 수 있습니다.

+0

대단히. 두 값을 설정하기 위해 정확한 레지스트리 이름을 알려주시겠습니까? 최대 TCP 연결 수와 TimeWait의 기본 대기 값 변경? Windows 용 8.1 – MonsterMMORPG

+0

@MonsterMMORPG, HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ Tcpip \ Parameters \ MaxUserPort 및 TcpTimedWaitDelay. 그것은 링크에, 나는 그들이 Windows 8.1에 대해 동일하다고 생각합니다. 존재하지 않는다면 추가해야합니다. – rodolk

+0

네, 추가해야한다고 생각합니다.어쨌든 그들이 일하고 있는지 확인할 수 있습니까? 내 말은 일부 cmd 명령 등을 의미합니까? – MonsterMMORPG

관련 문제