문제

사용자에게 새로운 장간수가 있는지 확인하기 위해 서버에서 긴 폴링을하는 스크립트가 있다고 가정 해 봅시다. 서버 측은 이와 같은 것입니다

while counter < 5
    if something_changed
        push_changes_to_client
        break
    else
        counter++
        sleep 5

데이터베이스를 5 번 확인하고 변경 사항이 없으면 다음 점검이 5S를 기다립니다. 이는 최대 실행 시간이 약 25 초입니다.

클라이언트가 한 페이지에서 다른 페이지로 실제로 빠르게 이동하면 어떻게됩니까? 클라이언트가 다른 페이지로 이동 한 후에도 서버 스크립트가 계속 실행되는 경우 다른 변경 요청을 보냅니다.

이것은 많은 사람들이 사이트 주변에서 빠르게 이동할 때 (각 페이지에서 25s 최대 실행 미만) 서버가 모든 스크립트를 계속 실행해야하며 존재하지 않는 페이지에 응답하려는 모든 스크립트를 계속 실행해야한다는 것을 의미합니까? 더 이상? 이로 인해 서버가 스레드 풀을 모두 사용하지 않습니까?

도움이 되었습니까?

해결책

동기식 수면 호출이있는 스레드-연결 모델에서는 실제로 많은 스레드를 묶을 수 있습니다. 그러나 "수면"이 단순히 콜백을 예약하고 반환하면 스레드 풀 로그 잼을 피할 수 있습니다.

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