Type de serveur pouvant traiter 1 million de requetes

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

joboy84
WRInaute discret
WRInaute discret
 
Messages: 74
Inscription: Lun Oct 01, 2007 10:59

Type de serveur pouvant traiter 1 million de requetes

Message le Dim Mai 25, 2008 18:32

Bonjour,

Je travaille sur le développement d'un service. (je ne peux pas en dire plus pour le moment)

Les clients utilisant le service vont générer environs 1 millions de requêtes mysql dans un premier temps.

Les requêtes sont toujours identiques et du type SELECT.

Je voudrais savoir s'il est possible de calculer le minimum niveau configuration du serveur dont j'aurai besoin pour autant de requêtes?

Je pense prendre mon serveur chez ovh.

Merci

DadouDuck
WRInaute passionné
WRInaute passionné
 
Messages: 788
Inscription: Lun Mai 28, 2007 22:41

Message le Dim Mai 25, 2008 18:37

Es tu certain d'avoir besoin d'autant de requêtes, que tu ne peux optimiser ces dernières? Utiliser un système de cache?

joboy84
WRInaute discret
WRInaute discret
 
Messages: 74
Inscription: Lun Oct 01, 2007 10:59

Message le Dim Mai 25, 2008 20:28

Je ne suis pas un spécialiste, c'est aussi pour cela que je demande vos points de vues et conseils :lol:

Mon service est un système de black listage tel rbl par exemple.

Le serveur du client se connecte sur mon serveur afin de vérifier si l'adresse ip de son utilisateur est listée dans la base.

Voila, c'est déjà tout...

Je voulais d"abord opter pour un système avec un fichier texte qui contiendrait les ip black listées, mais le problème est que la base étant mise à jour très régulièrement, cela ne permettrait pas au client d'avoir toujours la liste mis à jour en temps réel.

Le systeme de mise en cache ne devrait pas etre d'une trop grande aide vu que la requete n'est à priori jamais la même, vu que l'ip de l'utilisateur change pour chaque client :-)

Merci

FloBaoti
WRInaute passionné
WRInaute passionné
 
Messages: 682
Inscription: Dim Avr 30, 2006 18:42

Message le Dim Mai 25, 2008 21:24

Salut,

1 million de requêtes en combien de temps? Par minute, par heure, par jour... ?

Plus la taille de ta base de données sera grande, plus un serveur avec beaucoup de mémoire RAM est conseillé (MySQL mettra des informations en cache dans la RAM si le serveur est bien configuré).

joboy84
WRInaute discret
WRInaute discret
 
Messages: 74
Inscription: Lun Oct 01, 2007 10:59

Message le Dim Mai 25, 2008 21:27

Il s'agit d'un million de requêtes par jour...

Merci

jcaron
WRInaute accro
WRInaute accro
 
Messages: 1139
Inscription: Ven Fév 13, 2004 20:33

Re: Type de serveur pouvant traité 1 millions de requetes mi

Message le Lun Mai 26, 2008 0:33

joboy84 a écrit:Les clients utilisant le service vont générer environs 1 millions de requêtes mysql dans un premier temps.

Les requêtes sont toujours identiques et du type SELECT.

Je voudrais savoir s'il est possible de calculer le minimum niveau configuration du serveur dont j'aurai besoin pour autant de requêtes?


Un million de requêtes par jour, ça peut donner des choses très différentes en fonction de nombreux paramètres:
- répartition du trafic dans la journée: avec une répartition "classique", il faut compter une pointe à environ 3 à 4 fois la moyenne, donc 35 à 50 requêtes/seconde; avec une répartition beaucoup plus "concentrée" (avec une grosse pointe très courte), ça peut être beaucoup plus;
- complexité de la requête. Un "select chose from table where clef=valeur" (où valeur est numérique et clef est indexé) ça consomme évidemment beaucoup moins de ressources qu'un select complexe avec 12 jointures, quelques opérations multi-lignes (sum, count, avg, group by...) avec peu de possibilité d'indexation;
- taille de la base de données et de la partie "chaude" (la partie réellement accédée souvent... Il y a tout plein de bases de données qui font des tonnes de Go mais dont seulement quelques % sont réellement utilisées l'essentiel du temps)
- possibilité de mettre en place un cache
- éventuellement, les contraintes en termes de rapidité (les requêtes doivent-elles être services en ms, centaines de ms, secondes, dizaines de secondes...)?
- et probablement plein d'autres choses.

Dans ton cas, a priori:
- la répartition du trafic devrait être assez "normale"
- la requête est simple ("select 1 from table where ip=?"), facilement indexable (si tu as une proportion intéressante d'étendues d'adresses consécutives plutôt que d'adresses isolées il peut convenir de faire un "select 1 from table where ? between start and end")
- reste à savoir combien tu vas avoir d'entrées dans ta table; idéalement, il faut que l'ensemble de la table (+index) tienne en cache (de l'OS), donc que tu aies la quantité de RAM correspondante (+ de la place pour l'OS, le serveur mysql et le reste)
- tu peux avoir intérêt à utiliser un fichier d'index type Berkely DB, GDBM, CDB ou autre plutôt qu'une base mysql (ça va dépendre de la fréquence des mises à jour et du temps de mise en place): l'overhead par entrée (aussi bien en termes de place qu'en termes de CPU) sera nettement plus faible je pense.

Bref, pour quelques millions d'entrées une machine avec un 1 Go de RAM devrait largement faire l'affaire. Le reste (CPU, disque...) n'aura pas grande importance.

Jacques.

joboy84
WRInaute discret
WRInaute discret
 
Messages: 74
Inscription: Lun Oct 01, 2007 10:59

Message le Lun Mai 26, 2008 8:32

Bonjour,

Voici quelques précisions:

-La base contient entre 100000 et 200000 adresses ip, pour une taille de 5 à 10 MO au maximum.

-Les requetes étant effectuées par les clients, je pense avoir des nombres de requêtes importantes tout au long de la journée (le client n'a qu'un fichier php à ajouter sur son serveur et de faire un include sur les pages souhaitées...Puis le script se connecte à ma base de données pour vérifier si l'ip de l'utilisateur est listée ou non...)

- Concernant les mises à jour elles sont quasi effectuées en "non stop" car un script vérifie en permanence quelle ip réponds et quelle ip ne répond plus. Si elle ne réponds plus elle est supprimée de la base...Ceci afin d'éviter au maximum les faux positifs.

Concernant la structure de ma table, la voici:

Code: Tout sélectionner
CREATE TABLE `listeIpClient` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `adresseIp` varchar(15) default '0',
  `DateInsertion` date NOT NULL default '0000-00-00',
  PRIMARY KEY  (`id`),
  UNIQUE KEY `adresseIp` (`adresseIp`)
) ENGINE=MyISAM


Concernant le script, c'est assez simple effectivement:

Code: Tout sélectionner
<?php
$Extraction = mysql_fetch_assoc(mysql_query('SELECT dateValidite FROM websites WHERE pseudo=\'' . $pseudo . '\' AND url=\'' . $adresse . '\'') OR exit(mysql_error()) );

if(empty($adresse) || empty($pseudo) || $Extraction['dateValidite'] < $date)
    echo 'Erreur: Des parametre sont manquants.';

elseif (mysql_num_rows(mysql_query('SELECT adresseIp FROM listeIpClient WHERE adresseIP=\'' . $_SERVER['REMOTE_ADDR'] . '\'') OR exit(mysql_error()) > 0)
//Je pourrais aussi remplacer le code ci-dessus par:
//SELECT count(*) FROM listeIpClient WHERE adresseIP='$IPaVerif'
//Que me conseillez vous afin d utiliser le moins de ressources possibles?

    $resultat = present;
else
    $resultat = nonListe;

mysql_close();
?>

DadouDuck
WRInaute passionné
WRInaute passionné
 
Messages: 788
Inscription: Lun Mai 28, 2007 22:41

Message le Lun Mai 26, 2008 8:41

joboy84 a écrit:- Concernant les mises à jour elles sont quasi effectuées en "non stop" car un script vérifie en permanence quelle ip réponds et quelle ip ne répond plus. Si elle ne réponds plus elle est supprimée de la base...Ceci afin d'éviter au maximum les faux positifs.


Est ce bien pertinent, en effet, si elle ne répond plus suite à une panne temporaire du serveur, as tu mis en place un système de compteur, qui si elle ne répond plus sur une période donnée, alors elle est supprimée?

Euh, en relisant bien ton topic, de quelle IP parles tu? IP serveur mail, IP domaine, IP internaute...??

joboy84
WRInaute discret
WRInaute discret
 
Messages: 74
Inscription: Lun Oct 01, 2007 10:59

Message le Lun Mai 26, 2008 8:54

Bonjour,

Oui un système de compteur a été mis en place... :D

Concernant les ip, il s'agit d'adresses ip de serveurs proxy ou de pc zombies listées dans ma base.

Ensuite, le client peut vérifier si son utilisateur se connecte à partir d'un proxy ou non avec son adresse ip...(utile pour les proxy anonymes)


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :

  • Test de lien (type de redirection)
    Cet outil vous permet de tester la validité d'un lien pour le référencement. Il vous indique la nature du lien (lien en dur, redirection bien gérée par les moteurs ou redirection mal gérée par les moteurs).
  • Analyser la classe C de l'adresse IP
    Cet outil vous permet de vérifier si plusieurs sites sont hébergés sur la même classe C (adresse IP du serveur).


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités