C1000K 서버 구축(2)–백만 연결 을 실현 하 는 coet 서버
Comet 서버 는 논리 가 상대 적 으로 간단 하고 동시 접속 이 필요 한 서버 입 니 다.Comet 은 사이트 시스템 에서 의 응용 이 매우 광범 위 합 니 다.이 로그 의 소 개 를 볼 수 있 습 니 다.http://www.ideawu.net/blog/archives/737.html.
HTTP 프로 토 콜 처리
백만 개의 병렬 연결 을 지원 하 는 Comet 서버 를 개발 하려 면 저 는 C/C++언어 를 선택 하 겠 습 니 다.물론 Erlang,Java 등 다른 선택 도 있 습 니 다.long-polling Comet 서버 만 지원 하 는 경우 먼저 HTTP 프로 토 콜 을 분석 하 는 능력 을 갖 추어 야 합 니 다.저 는 libevent 를 선택 하여 HTTP 프로 토 콜 을 처리 하 겠 습 니 다.
채널 및 구독 자 관리
서버 가 시 작 될 때 100 만 개의 채널 대상 의 공간 을 미리 분 배 했 지만 구독 자 대상 은 필요 에 따라 분배 되 었 고 메모리 탱크 방식 을 통 해 100 만 개의 채널 대상 과 프로그램의 다른 데 이 터 는 24MB 의 메모 리 를 차지 했다.
Benchmark
icomet 서버 시작:
./icomet
서버 가 100 개의 포트 를 감청 한 것 은 테스트 의 편 의 를 위해 서 입 니 다.이 유 는 앞의 글 에서 분석 한 바 와 같 습 니 다.C1000K 서버 구축(1)–기초.
그리고 Benchmark 클 라 이언 트 를 시작 합 니 다:
./tools/benchmark 127.0.0.1 8100
benchmark 프로그램 은 10 만 개의 연결 을 만 들 때마다 일시 정지 되 며,Enter 를 누 른 후 계속 합 니 다.top/ps 를 통 해 icomet 프로 세 스 의 메모리 사용량 을 확인 합 니 다.최종 적 으로 다음 과 같은 데 이 터 를 얻 을 수 있 습 니 다.
연결 수
프로 세 스 VIRT
프로 세 스 RES
0
39m
24m
100000
302m
288m
200000
579m
565m
500000
1441m
1427m
1000000
2734m
2720m
이 를 통 해 알 수 있 듯 이 모든 Comet 연결 은 약 2.7KB 의 메모 리 를 사용 하고 있 습 니 다.이 를 통 해 100 만 Comet 연결 은 2.7GB 의 메모 리 를 사용 해 야 합 니 다.이 때 서버 가 비어 있 고 프로 세 스 가 CPU 를 0%차지 합 니 다.
항목 의 코드 는:https://github.com/ideawu/icomet,여러분 이 시험 적 으로 사용 하고 테스트 데 이 터 를 피드백 하 는 것 을 환영 합 니 다.
Related posts:
C1000K 서버 구축(1)–기초150 줄 C 코드 의 coet 서버
페 이 스 북 의 채 팅 시스템 구조 에 대해 이야기 하 다.
nginx-push-stream-module note재 귀 횟수 제한 조심 하 세 요.
지금 보고 있 는 글 은 C1000K 서버 구축(2)–백만 연결 을 실현 하 는 coet 서버 입 니 다.
Linode VPS-미국 가상 호스트|IT 소 블 로그 취 합 사이트
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
재 미 있 는 Ngin x 선 에 오 류 를 적어 주세요.두 서버 에 nginx 한 대 를 부하 균형 이 높 은 데 사용 할 수 있 도록 설정 하 였 으 나, nginx 를 통 해 데 이 터 를 요청 할 때, 매번 첫 번 째 서버 에 전 화 를 걸 때마다 오 류 를 보고 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.