트래픽이 많은 웹 사이트와의 긴 폴링 문제
-
07-07-2019 - |
문제
사용자에게 새로운 장간수가 있는지 확인하기 위해 서버에서 긴 폴링을하는 스크립트가 있다고 가정 해 봅시다. 서버 측은 이와 같은 것입니다
while counter < 5
if something_changed
push_changes_to_client
break
else
counter++
sleep 5
데이터베이스를 5 번 확인하고 변경 사항이 없으면 다음 점검이 5S를 기다립니다. 이는 최대 실행 시간이 약 25 초입니다.
클라이언트가 한 페이지에서 다른 페이지로 실제로 빠르게 이동하면 어떻게됩니까? 클라이언트가 다른 페이지로 이동 한 후에도 서버 스크립트가 계속 실행되는 경우 다른 변경 요청을 보냅니다.
이것은 많은 사람들이 사이트 주변에서 빠르게 이동할 때 (각 페이지에서 25s 최대 실행 미만) 서버가 모든 스크립트를 계속 실행해야하며 존재하지 않는 페이지에 응답하려는 모든 스크립트를 계속 실행해야한다는 것을 의미합니까? 더 이상? 이로 인해 서버가 스레드 풀을 모두 사용하지 않습니까?
해결책
동기식 수면 호출이있는 스레드-연결 모델에서는 실제로 많은 스레드를 묶을 수 있습니다. 그러나 "수면"이 단순히 콜백을 예약하고 반환하면 스레드 풀 로그 잼을 피할 수 있습니다.
제휴하지 않습니다 StackOverflow