Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1532 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Détecter l'effondrement d'un serveur

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Détecter l'effondrement d'un serveur

n°1858877
GeneralKon​ig
Posté le 07-03-2009 à 23:09:58  profilanswer
 

Bonjour,
 
J'utilise les librairies Thread et Asio de Boost (donc en C++) pour faire un aspirateur de pages web (c'est pour un projet)
Mon but est donc de traiter le plus de pages en même temps. Chaque thread lancé se connecte au serveur pour récupérer une page et la traiter.
Seulement on me demande d'optimiser la gestion des threads, c'est-à-dire d'en lancer jusqu'à ce que le serveur commence à s'effondrer.
 
C'est cette dernière chose qui me pose problème : comment repérer le début de l'effondrement d'un serveur ?
Il me semble que les serveurs ont un nombre limité de connexions simultanées, mais que celui-ci varie en fonction de la configuration du serveur.
 
Pour info j'ai tenté de lancer 250 threads sur un même serveur (celui de mon école), et en 7 secondes 210 threads (en moyenne) me ramènent le contenu de la page visée, et les autres je ne sais pas ce qu'ils deviennent, car apparament aucune exception n'est lancée.
 
Avez-vous des infos qui pourraient m'aider svp ?
Merci

mood
Publicité
Posté le 07-03-2009 à 23:09:58  profilanswer
 

n°1858951
esox_ch
Posté le 08-03-2009 à 11:29:34  profilanswer
 

Je pense que tu peux regarder le délai moyen de réponse d'un thread, et s'il commence à augmenter de manière significative (et là est tout le problème, il te faudra définir ce que "significatif" signifie), tu arrêtes.
Ceci dit je trouve que c'est un peu risqué comme pratique... Il est en effet relativement simple de configurer iptables (ou autre firewall) pour qu'il détecte ce genre de comportement ( = même IP envoyant un grand nombre de requêtes en peu de temps) et d'appliquer une règle de QoS restrictive ou la blacklister ... Généralement on essaie de faire en sorte que les aspirateurs agissent d'une manière proche de celle d'un humain ( => pas 100 requêtes / sec) afin de ne pas être blacklistés


Message édité par esox_ch le 08-03-2009 à 11:29:47

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
n°1858969
0x90
Posté le 08-03-2009 à 12:31:14  profilanswer
 

Tu définis une période de temps (genre 1/10 de sec, au pif). Tu mesure pour chaque période le débit total de tout tes threads. Ensuite à chaque fin d'intervale tu prends une décision, soit tu augmente le nombre de threads, soit tu le réduis :
- si le débit est plus gros que la période précédente on reprends la même décision qu'on a prise à a période précédente.
- si le débit est plus faible, on prends la décision inverse.
 
C'est pas parfait, mais ça peut faire un bon départ, le seul cas ou ça peut problème c'est sur le fait que quand t'as trouvé la bonne valeur le truc oscille, si c'est entre 250 et 251 threads tu t'en fout, si c'est entre 2 et 3 parceque le serveur limite en dur par contre l'oscillation sera trop violente et pas efficace (dans ce cas on peut imaginer un mécanisme d'ammortissement assez simple).


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Détecter l'effondrement d'un serveur

 

Sujets relatifs
Serveur en java et eclipse : Probléme de lancement[J2EE] un daemon sur un serveur j2EE ??
[C#] Smtp et liste de diffusion Serveur Exchangeprobleme connexion avec serveur SMTP via une servlet
Comment enregistrer des données coté serveur ?[SQL SERVEUR] porbleme de concatenation
#2003 le serveur ne répond pas "phpmyadmin'"Copie de fichier vers autre serveur
version différente entre bibliothèque et serveur ?[Resolu] FileReference et reponse du serveur...
Plus de sujets relatifs à : Détecter l'effondrement d'un serveur


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR