2017-10-25 1 views
0

저는 재무 조사 데이터를 받고 MongoDB에 쓰는 ~ 30-50 websocket 연결을 열 것입니다. 매초 수백 개의 메시지가 수신 될 수 있습니다. 저는 Autobahn의 Python Twisted Websocket을 사용하고 있습니다. 그러나 비동기 스레드를 하나 돌릴 때 확장 가능한지 궁금합니다. 내 본능은 단일 스레드 Twisted와 MongoDB 모두 처리량을 처리 할 수 ​​있지만 그 가설을 확인하고 싶습니다. Twisted reactor가 websocket으로 처리 할 수있는 처리량은 어느 정도입니까?

내가 3 잠재적 인 옵션을 참조하십시오

  1. 1 개 실을 사용하여을() 모든 웹 소켓 엔드 포인트에 연결 reactor.run 호출합니다.
  2. 각 websocket 연결은 고유 한 reactor.run()이있는 자체 스레드에 속합니다. 모든 스레드를 생성하는 하나의 기본 유닉스 데몬으로 실행하십시오.
  3. 각 websocket 연결은 자체 스레드에 속하며 UNIX 데몬과 다른 스크립트로 실행됩니다.

가장 강력한 옵션은 무엇입니까? 고마워요!

+0

옵션 3은 여러 cpu 코어를 활용할 수있는 유일한 옵션입니다. – freakish

답변

0

귀하의 문제를 설명하는 한 귀하의 응용 프로그램은 CPU 바운드가 아닌 IO 바운드입니다. 비동기식 솔루션을 사용한다면 스레드를 피하십시오. Twisted는 스레드 it does을 지원하지 않지만 비동기 방식으로 프로그래밍 할 때 쓰레드는 단지 오버 헤드입니다. 그들은 CPU를 사용하기 전에 Twisted와 Autobahn이 많은 IO를 처리 할 수 ​​있습니다. 그래서 당신의 응용 프로그램 코드가 높은 CPU가 아니면 당신은 괜찮을 것입니다.

관련 문제