문제

우리는 클라이언트는 필요를 얻을 대화형 메시지에서,서버는 클라이언트는 전 세계적으로 분산되어 뒤에 모든 방화벽의 종류의 모든 종류와 포트를 닫습니다.유일한 것은 우리가 의지할 수 있는 HTTP 포트 80(및 HTTPS443).

디자인은 기본적으로 모델링된 후 XMPP(Jabber protocol)을 사용하여,우리의 클라이언트와 IIS.클라이언트 문제를 요청합니다.NET 처리기;handler 을 보유하고 열기를 요청을 위해 찾고있는 동안 메시지입니다.어떤 경우 메시지가 도착하면,그들은 즉시 클라이언트에 보내;하지 않을 경우,제한 시간 후에는 연결을 닫으로"아니오-데이터"를 응답합니다.클라이언트에 즉시 다시 열리는 커뮤니케이션을 제공 합니다.

론,이론적으로 설명합니다.

실제로 일어나고 있는 것은 첫째,IIS 처리할 수 없습니다 더 이상 약 100 여러 요청을 동시에는 모든 대기,과될 수 있습 몇 분간"연결"및 IIS 는 것을 인정하는 클라이언트라고 합니다.두 번째,절반에 대한 시간을 클라이언트에 시간이없이 서버의 응답(클라이언트 제한 시간은 다섯 개의 분 이상 서버의).

게시 항상 작동합니다.기타 데이터 제공되는 동일한 웹 서버에서 작동합니다.웹사 서비스 같은 서버에서 작동합니다.이 out-of-the-box 설치 윈도우에서 2K3 서버입니다.

가 구성 옵션리,또는 다른 뭔가가 있어야 나는 모습에 주소를 이?

감사합니다.

도움이 되었습니까?

해결책

나는 당신을 생각한 타격 ASP.NET 스레드 풀을 제한하기보다는,IIS 것들입니다.보를 만들기로 비동기 HTTP 처리기(IHttpAsyncHandler 로)을 때 그들은 블록/기다리지 않 묶는 스레드 풀(그들 사용료 포트 대신에).

업데이트:이 최근에는 것에 동의 생각: CodeProject:확장 가능한 혜성이 결합 ASP.NET

다른 팁

면 IIS 지 않는 귀하의 요구 사항에 맞게 선택해야 합니다 또 다른 웹서버와 같이 아파치 (과 Mod_mono 다)또는 LightTPD.

BTW,할 수 있는 터널 XMPP HTTP 를 통해 사용 XMPP 을 통해 보쉬.필요 없음을 발명 사용자 정의 프로토콜입니다.

상자에,윈도우 필요 연결.나를 구현하는 혜성 서버에서 asp.net 고 실행에 바보 같은 기본값으로 초기화합니다.을 읽은 후에 이러한 링크:

나는 다음과 같은 변경된 내용을 우리 windows2k8 서버입니다.

  • reg 추가\SOFTWARE\\System\CurrentControlSet\Services HTTP\Parameters/v MaxConnections/t 니다./d1000000/f
  • reg 추가\SOFTWARE\\System\CurrentControlSet\Services TcpIp\Parameters/v TcpTimedWaitDelay/t 니다./d30/f
  • reg 추가\SOFTWARE\\SOFTWARE\Microsoft\ASP.NET\2.0.50727.0/v MaxConcurrentThreadsPerCPU/t 니다./d0/f
  • reg 추가\SOFTWARE\\SOFTWARE\Microsoft\ASP.NET\2.0.50727.0/v MaxConcurrentRequestsPerCPU/t 니다./d30000/f
  • appcmd.exe 설정 응용 프로그램 풀"[앱 수영장 이름]]"/queueLength:65535
  • appcmd.exe 설정 config/섹션:serverRuntime/appConcurrentRequestLimit:100000
  • reg 추가\SOFTWARE\\System\CurrentControlSet\Services TcpIp\Parameters/v MaxUserPort/t 니다./d65534/f
  • reg 추가\SOFTWARE\\System\CurrentControlSet\Services TcpIp\Parameters/v MaxFreeTcbs/t 니다./d2000/f
  • reg 추가\SOFTWARE\\System\CurrentControlSet\Services TcpIp\Parameters/v MaxHashTableSize/t 니다./d2048/f reg 추가\SOFTWARE\\System\CurrentControlSet\Services 즉\Parameters/v MaxPoolThreads/t 니다./d80/f
  • appcmd 설정 config/섹션:인 processmodel/requestQueueLimit:100000/commit:기계

내가 알지 못하는 경우 모든 변화가 필수적이지만,일부 quik tesing 에 대한 테스트 서버,우리는 작 over30k 실행하는 연결 및 5k 요청합니다.갈 수 없었기 때문에 더 나의 클라이언트 컴퓨터에서 테스트를 실행합니다.

XMPP 설계되지 않았을 위한 고성능 애플리케이션에 이상적이다.는 메시지를 통과해야를 통해 전체 스택하여 응용 프로그램 계층이며,많은 XML 구문 분석.당신이 어떤 다른 사람을 사용하여 표준 이외의 XMPP?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top