2010-11-02 35 views
2

Mon application effectue beaucoup d'appels XHR consécutifs. Cela signifie établir beaucoup de connexions HTTP. J'essaie d'analyser les performances de toutes ces connexions. J'ai découvert que la première connexion HTTP fait passe environ 10% de sa durée sur Blocage (définition suivante cité Firebug Wiki):Firefox Les connexions HTTP passent beaucoup de temps sur la phase de blocage

Blocage-Le temps passé dans une file d'attente de navigateur en attente d'une connexion réseau (anciennement appelé Queuing). Pour les connexions SSL, cela inclut le protocole SSL Handshake et l'étape de validation OCSP.

Dans les appels consécutifs, le temps passé sur le blocage augmente, et après environ 10 appels, le blocage se maintient à une moyenne de ~ 120ms (!!!). J'ai essayé de mesurer les connexions HTTP de manière similaire dans Chrome avec les DevTools et dans IE avec Fiddler, et bien qu'ils n'utilisent pas exactement les mêmes étapes/noms pour les différentes étapes sur une connexion HTTP, aucun des deux ne montre des signes de la quantité excessive de temps passé sur le blocage que Firefox fait.

Je peux exclure que c'est un manque de connexions HTTP (persistantes) disponibles. Puisque les appels XHR sont faits de manière synchrone.

Quelqu'un de familier avec ce comportement de Firefox? Si nécessaire, je peux afficher la sortie Firebug Net Panel.

+0

Voulez-vous dire que les appels XHR sont effectués de manière asynchrone? Si elles sont synchrones, le blocage serait le comportement attendu. – mikerobi

+0

Non, ils sont explicitement synchrones. L'un après l'autre, jamais plus d'un à la fois. – Kwaak

Répondre

3

Firefox a seulement une limite au nombre de connexions HTTP (S) actives à un moment donné. Ceci est contrôlé par la préférence network.http.max-connections-per-server (redémarrage requis après un changement). Je soupçonne fortement que vous atteignez cette limite.