C1000K 서버 구축(2)–백만 연결 을 실현 하 는 coet 서버

이것 은 C1000 K 시퀀스 에 관 한 두 번 째 편 입 니 다.앞의 글 에서 C1000 K 를 구축 하 는 서버(1)–를 바탕 으로 C1000 K 를 지원 하 는 Linux 시스템 의 커 널 파라미터 조정 과 시스템 설정 을 소개 합 니 다.이 글 에서 실제 응용 서버 에 대해 C1000 K 테스트 를 할 것 입 니 다.
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 소 블 로그 취 합 사이트

좋은 웹페이지 즐겨찾기