2008-09-16 4 views
8

사용자 지정 서버를 작성할 때 주어진 시간에 서버에 연결할 수있는 최대 사용자 수를 결정하는 모범 사례 또는 기술은 무엇입니까?컴퓨터에서 지원할 수있는 네트워크 연결 수는 얼마나됩니까?

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

또한 네트워크 연결 수를 특정 최대 사용자 수로 제한하는 것이 좋습니다. 또는 서버가 네트워크 연결 수를 제한하지 않고 응답 시간이 매우 길 때까지 성능을 저하시켜야합니까?

답변

7

댄 케겔 여기, 하나의 서버에서 네트워크 연결의 많은 양을 처리하기 위해 함께 기술의 요약을 넣어 : http://www.kegel.com/c10k.html

+0

그 종이는 정말 오래된 (1999)와 정말 최신 보인다. 예를 들어, Linux (최소한 Ubuntu)의 ulimit은 무제한으로 설정되어 있으므로 32768로 설정하는 것은 아마도 필요하지 않습니다. –

5

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

libevent 또는 libev을 확인하려면 이러한 종류의 부하를 처리하는 데 고품질의 서비스 인터페이스가 필요합니다.

0

높은 동시성 연결에서 가장 큰 장애물 중 하나는 실제로 관련된 라우터입니다. 홈 사용자 지향 라우터는 일반적으로 라우터가 실제로 서버에 서비스를 제공하지 못하게하는 작은 NAT 테이블을 가지고 있습니다.

라우터/네트워크 인프라 설정도 조사해야합니다.

0

나는 서버가 허용 할 연결 수를 제한해서는 안된다고 생각합니다. 연결을 수락하고 닫을 때 발생할 수있는 예외를 올바르게 잡아서 처리해야합니다. 기본 OS 레이어에 그런 종류의 낮은 수준의 프로그래밍을 남겨 두어야합니다. 서버를 쉽게 포팅 할 수 있습니다.

0

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

다른 유닉스 맛 파일 핸들의 "무제한"수를 지원합니다은/소켓 다른 32768

일반적인 사용자 제한은 8192입니다 같은 높은 값을 가질 수 있지만 일반적으로 더 높게 설정 될 수있다.

윈도우가 더 제한적이지만 서버 버전이 더 높은 제한을 가지고 있다고 생각합니다.

4

그것은 좋은 질문이며 분명히 상황입니다. 당신의 컴퓨터는 무엇입니까? Quad Core Xeons, 128GB RAM, Fibre Channel Connectivity (우리가 방금 구입 한 Dell R900과 같은)가 장착 된 4 소켓 시스템이 있습니까? 또는 256 MB의 RAM 및 56K 모뎀을 갖춘 p3 550에서 실행하고 있습니까? 각 연결은 서버에 얼마나 많은 부하를 줍니까? 어떤 종류의 응답을 받아 들일 수 있습니까?

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

컴퓨터에서 지원할 수있는 연결 수를 알려줍니다.

로드/유닛 테스트 시나리오의 중요한 점은 유닛 테스트에 응답 시간 예상을 넣고 응답 시간을 벗어날 때까지로드를 늘릴 수 있다는 것입니다. Y 초 응답으로 X 명의 사용자를 지원해야한다는 요구 사항이있는 경우로드 테스트를 통해이를 입증 할 수 있습니다.

관련 문제