2014-03-05 4 views
4

현재 while (true) 루프 내에서 longpolling 스크립트를 실행 중입니다. PHP set_time_limit은 0으로 설정됩니다. 이전 프록시를 프록시하는 다른 nginx 서버가있는 아파치 서버가 있습니다. 이 longpolling 스크립트를 통해 MySQL 테이블에서 텍스트를 가져옵니다. 이 프로세스가 서버 성능을 저해 할 지 알고 싶습니다. 그렇다면 많은 수의 동시 사용자가 데이터를 가져 오는 것이 어느 정도입니까? 대신 PHP-fpm 대신 nginx를 넣어야합니까?서버에서 Longpolling 효과

답변

1

롱 폴링은,이 서버에 아무것도 차단하지 않습니다 이벤트 기반 서버에서 작업자

  • 을 차단합니다, 몇 가지 주목할만한 서버 양면 특성 전용 노동자와 서버에서
    • 있다 어떤 경우
    • 그 때문에 PHP 인스턴스마다 동시 조사
    • 에서 차단되고 또한
    • PHP 인터프리터 전용 노동자를 사용하는 한정된 자원을 하나 개 이상의 소켓들을 사용하는 것 폴링 스크립트가 제대로 컨텍스트 스위치를 수행하고 CPU는 대부분이에서 근무 (당신에게 가정 레이더

    이하로 유지됩니다 대부분의 설치는 PHP 인스턴스는 생산 수준의 아파치를 사용 가능한 RAM

  • 에 의해서만 제한된다 MPM이 아닌 실험적인 이벤트 기반) MPM, RAM 사용량이 증가 할 수 있습니다 (이벤트 기반) Nginx에
  • 을에 차단하기 위해 선도하지 않고, 의지

    • 까지 무료로 일부 아파치 노동자의 Nginx에 긴 조사 처리를 전환 : apache-mod-php5로 실행하는 경우 PHP interp reter의 정적 RAM 풋 프린트는 프로세스 당 한 번만 발생합니다.

    다음과 같이 몇 가지 분석 및 프로파일 링을 먼저 수행하는 것이 좋습니다. 실제로 동시 실행되는 긴 폴러가 실제로 얼마나 많이 실행됩니까? 아파치는 노동자를 잃었습니까? (그리고 카운트를 쉽게 늘릴 수 없습니까?) 긴 폴을 쉽게 이벤트 기반 솔루션 (예 : 노드)으로 이식 할 수 있습니까?

    의심스러운 점이 있다면, 나는 서로를 가깝게 유지하는 경향이 있습니다. 따라서 메인 앱이 아파치 내부에서 실행되는 경우, 긴 폴러를 꺼내는 것이 좋은 주장이 필요합니다.이 마지막 부분은 개인적인 취향이라고 이해하십시오.

  • +0

    웹 소켓은 좋은 옵션입니까? – Saptarsi

    +0

    이벤트 기반 서버 란 무엇입니까? – nick

    +0

    @nick : 이벤트 기반 서버 (예 : node.js, nginx)에는 각 연결에 대한 전용 작업자 프로세스 또는 스레드가 없습니다. –