Ce n'demandes simultanées signifie vraiment?
Lorsque nous parlons de la capacité d'une application web, on évoque souvent les requêtes simultanées qu'il pourrait manipuler.
Que mon une autre question discuté, Ethernet utilisation TDM (Time Division Multiplexing) et n ° 2 signaux peuvent passer le long du fil simultanément. Donc, si le serveur web est relié au monde extérieur par l'intermédiaire d'une connexion Ethernet, il y a littéralement pas de demandes simultanées à tous. Toutes les demandes seront venir dans l'un après l'autre.
Mais si le serveur web est relié au monde extérieur par le biais de quelque chose comme une carte réseau sans fil, je crois que les multiples signaux qui pourrait arriver à la même époque par le biais de l'onde électromagnétique. Seulement dans cette situation, il existe de réelles demandes simultanées d'en parler.
Suis-je droit sur cette?
Grâce.
- Par "demandes simultanées" nous ne voulons pas dire qu'ils sont arrivés en même temps, simplement qu'ils sont traités simultanément. Bien que disposant de plusieurs interfaces réseau pourrait permettre de demandes de réellement arriver à la même heure.
Vous devez vous connecter pour publier un commentaire.
J'imagine que "les demandes simultanées" pour une application web n'a pas de descendre au niveau du lien. C'est plus une question du traitement de la demande par l'application et le nombre de demandes arrivent au cours de ce traitement.
Par exemple, si une demande est en moyenne de 2 secondes à remplir (à partir de la réception au serveur web de sa transformation par le biais de l'application pour l'envoi de la réponse), alors il pourrait avoir besoin pour gérer beaucoup de demandes simultanées si elle reçoit beaucoup de demandes par seconde.
Les demandes doivent se chevaucher et être gérées en même temps, sinon la file d'attente de demandes de simplement remplir indéfiniment. Cela peut sembler de bon sens, mais pour beaucoup d'applications web, c'est un vrai sujet de préoccupation parce que le flot de demandes peuvent occuper une ressource pour l'application, comme une base de données. Ainsi, si l'application a une mauvaise base de données des interactions (trop de procédures complexes, une mauvaise indexation/optimisation, une liaison lente à une base de données partagée par de nombreuses autres applications, etc.) alors qui crée un goulot d'étranglement qui limite le nombre de requêtes simultanées, l'application peut gérer, même si l'application elle-même doit être en mesure de les gérer.
Il est vrai qu'aucun des deux paquets peuvent arriver à exactement le même temps (sauf si plusieurs cartes réseau sont en cours d'utilisation par les Entrailles de son commentaire). Toutefois, les sites web demande nécessite généralement un certain nombre de paquets. L'arrivée de ces paquets est entrecoupée lorsque plusieurs demandes sont à venir dans près de la même époque (à savoir si l'utilisation filaire ou sans fil, accès). Aussi, le traitement de ces demandes peuvent se chevaucher.
Ajouter le multi-threading (ou de plusieurs processeurs /cœurs) de l'image, et vous pouvez voir comment les opérations de longue durée, telles que la lecture à partir d'une base de données (ce qui nécessite beaucoup d'attente pour une réponse) peut facilement se chevauchent, même si la personne paquets arrivent dans une série de la mode.
Edit: Ajout de la note ci-dessus afin d'incorporer les Entrailles de son feedback.
.En imaginant un serveur http à l'écoute sur le port 80, ce qui se passe est:
un client se connecte au serveur pour demander une page; c'est la connexion à partir de certains de l'origine de l'adresse IP, en utilisant une origine locale port.
l'OS (en fait, la pile réseau) examine les requêtes entrantes IP de destination (depuis le serveur peut avoir plus d'une carte réseau) et le port de destination (80) et vérifie que certains demande est enregistrée à la gestion des données sur ce port (le serveur http). La combinaison de 4 chiffres (IP d'origine, l'origine de port, adresse IP de destination, le port 80) identifie de manière unique une connexion. Si un tel lien n'existe pas encore, un nouveau est ajouté à la pile réseau interne de table et une demande de connexion est transmise au serveur http de la socket d'écoute. À partir de maintenant sur la pile de réseau passe uniquement sur les données pour la connexion à l'application.
Plusieurs client peut envoyer des requêtes, pour chacun des ci-dessus se produit. Donc, à partir du réseau de point de vue, tout se passe en série, puisque les données arrive un paquet à la fois.
À partir du point de vue logiciel, le serveur http est à l'écoute des demandes entrantes. Le nombre de demandes qu'ils peuvent avoir en file d'attente avant que les clients commencent à obtenir des erreurs est déterminé par le programmeur basé sur la capacité du matériel (c'est le premier bit de la simultanéité: il peut y avoir plusieurs demandes en attente de traitement). Pour chacune d'elle, il va créer un nouveau socket (aussi rapide que possible, afin de continuer à vider la file d'attente des demandes) et de laisser le traitement effectif de la demande doit être faite par une autre partie de l'application (les différents threads). Ces routines de traitement sera (dans l'idéal), passent la plupart de leur temps d'attente pour les données d'arrivée et de réagir (idéalement) rapidement à elle.
Car, généralement, le traitement des données est beaucoup plus rapide que le réseau I/O, le serveur peut gérer plusieurs demandes pendant le traitement du trafic réseau, même si le matériel est constitué d'un seul processeur. Plusieurs processeurs accroître cette capacité. Donc, à partir du point de vue logiciel, tout se passe en même temps.
Comment le réel de traitement des données est mis en œuvre est là la clé de la performance des mensonges (vous voulez qu'il soit aussi efficace que possible). Plusieurs possibilités existent (async socket opérations prévues par la classe Socket, threadpool, unique fils, le nouveau parallèle fonctions de .NET 4).