문제

사용자 정의 서버를 작성할 때 특정 시간에 서버에 연결할 수 있는 최대 사용자 수를 결정하는 모범 사례나 기술은 무엇입니까?

나는 컴퓨터 하드웨어의 성능, 네트워크 용량, 서버 프로토콜이 모두 중요한 요소라고 가정합니다.

또한 네트워크 연결 수를 특정 최대 사용자 수로 제한하는 것이 좋은 습관이라고 생각하십니까?아니면 서버가 네트워크 연결 수를 제한하고 응답 시간이 극도로 높아질 때까지 성능이 저하되도록 놔두어서는 안 됩니까?

도움이 되었습니까?

해결책

Dan Kegel은 단일 서버에서 대량의 네트워크 연결을 처리하는 기술 요약을 다음과 같이 정리했습니다. http://www.kegel.com/c10k.html

다른 팁

일반적으로 최신 서버는 매우 많은 수의 동시 연결을 처리할 수 있습니다.나는 동시에 8,000개가 넘는 TCP/IP 소켓을 여는 시스템에서 작업했습니다.

이러한 종류의 로드를 처리하려면 고품질 서비스 인터페이스가 필요합니다. 확인해 보세요. libevent 또는 리브브.

좋은 질문이고 확실히 상황에 따라 다릅니다.당신의 컴퓨터는 무엇입니까?쿼드 코어 Xeon, 128GB RAM, 파이버 채널 연결(방금 구입한 Dell R900과 같은)로 채워진 4소켓 시스템이 있습니까?아니면 256MB RAM과 56K 모뎀을 갖춘 p3 550에서 실행 중입니까?각 연결이 서버에 얼마나 많은 로드를 가합니까?어떤 종류의 응답이 허용됩니까?

이것이 당신이 대답해야 할 질문입니다.답을 찾는 가장 좋은 방법은 부하 테스트를 통해서라고 생각합니다.코드가 서버에 대해 수행할 예상(그리고 예상치 못한) 경로에 대한 단위 테스트를 만듭니다.해당 작업을 동시에 수행하는 10, 100, 1000, 10000명의 사용자를 시뮬레이션할 수 있는 부하 테스트 프레임워크를 찾으세요.

그러면 컴퓨터가 지원할 수 있는 연결 수를 알 수 있습니다.

로드/단위 테스트 시나리오의 가장 큰 장점은 단위 테스트에 응답 시간 기대치를 입력하고 응답 시간을 벗어날 때까지 로드를 늘릴 수 있다는 것입니다.Y개의 두 번째 응답으로 X명의 사용자를 지원해야 하는 경우 부하 테스트를 통해 이를 입증할 수 있습니다.

높은 동시성 연결에서 가장 큰 장애 중 하나는 실제로 관련된 라우터입니다.가정용 사용자 지향 라우터에는 일반적으로 작은 NAT 테이블이 있어서 라우터가 실제로 서버에 연결을 제공하는 것을 방지합니다.

라우터/네트워크 인프라 설정도 조사하십시오.

내 생각에는 서버가 허용하는 연결 수를 제한해서는 안 된다고 생각합니다. 연결을 수락하고 닫을 때 발생할 수 있는 예외를 적절하게 잡아서 처리하면 괜찮을 것입니다.그런 종류의 낮은 수준의 프로그래밍은 기본 OS 계층에 맡겨야 합니다. 그렇게 하면 서버를 더 쉽게 포팅할 수 있습니다.

이것은 실제로 운영 체제에 따라 다릅니다.

다양한 Unix 버전은 "무제한" 수의 파일 핸들/소켓을 지원하며 다른 버전은 32768과 같은 높은 값을 갖습니다.

일반적인 사용자 제한은 8192이지만 일반적으로 더 높게 설정할 수 있습니다.

나는 Windows가 더 제한적이라고 생각하지만 서버 버전은 더 높은 제한을 가질 수 있습니다.

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