2 votes

Problème de longue attente avec un site Web à fort trafic

Dire que j'ai un script qui effectue un long polling sur le serveur pour vérifier si l'utilisateur a de nouveaux messages. Côté serveur, cela ressemblerait à ceci

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

Ceci vérifie la base de données 5 fois et à chaque fois s'il n'y a pas de changement, cela attend 5s jusqu'à la prochaine vérification, ce qui donne un temps d'exécution maximum d'environ 25s.

Que se passe-t-il lorsque le client passe très rapidement d'une page à une autre? Je suppose que le script serveur continue à s'exécuter même après que le client ait changé de page, où il envoie une autre demande de changements.

Cela signifie-t-il que lorsque de nombreuses personnes se déplacent rapidement sur le site (moins que les 25s maximum d'exécution sur chaque page), le serveur doit continuer à exécuter tous les scripts qui essaient de répondre à une page qui n'existe plus? Cela ne risquerait-il pas de pousser le serveur à utiliser rapidement tout son pool de threads?

4voto

Jeffrey Hantin Points 19272

Dans un modèle de fil par connexion avec des appels de sommeil synchrones, cela peut en effet bloquer un grand nombre de threads. Cependant, si la "sleep" se contente de planifier un rappel et de retourner, l'engorgement du pool de threads peut être évité.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X