Tornado는 "Python으로 작성된 비교적 간단하고 차단되지 않는 웹 서버 프레임워크"입니다. 이것이 무엇을 의미하는지 어느 정도 설명할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/1419624

  •  07-07-2019
  •  | 
  •  

문제

이것은 아마도 어리석은 질문일 것입니다. 그러나 "비차단 웹 서버"란 정확히 무엇입니까?모든 웹 서버는 기술적으로 비차단 기능을 갖추고 있습니다. 그렇죠?그렇지 않으면 동시 연결을 어떻게 처리할 수 있습니까?Apache2는 fork()와 pthread의 조합을 사용하여 이를 달성합니다.Tornado(그리고 Twisted도)는 정확히 어떻게 다릅니까?그들은 단지 여러 개의 소켓을 비보킹 모드로 설정하고 FD 목록(또는 이에 상응하는 목록)을 구축한 다음 하나의 큰 select() sys 호출로 이를 반복합니까?

이와 같은 프레임워크를 어디에 사용하고 Apache2(또는 기타 널리 사용되는 서버)에 비해 어떤 이점을 제공할 수 있습니까?감사해요

도움이 되었습니까?

해결책

이것 EventMachine에 대한 기사 힌트를 줄 수도 있습니다:

포킹 / 스레드 웹 서버의 전통에 가파른 나는 몇 년 전에 워털루 대학교 (University of Waterloo University)의 연구 프로젝트 중 하나에 합류했을 때 오히려 놀랐습니다.우리는 다른 웹 서버 아키텍처를 벤치마킹하고 있었고, 최고 성과는 모두 이벤트 중심의 서버였습니다.

질문으로 모든 사람을 괴롭히는 동안, 나는 왜 수십만 명의 요청이있는 환경에서, 스레드 관리와 관련된 포킹 및 컨텍스트 전환이 엄청나게 비싸집니다 (포크는 부모 프로세스의 메모리 사본을 수행하므로 최악의 성과가됩니다. 매번).반면, 비교하면, 빡빡하고 최적화 된 이벤트 루프는 무거운 하중에서 성능에있어 실제로 빛납니다.

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