2 votes

Comment optimiser la base de données mysql pour servir des milliers de requêtes à la fois ?

Comment optimiser la base de données MySQL pour servir des milliers de requêtes à la fois ?

Pour un site comme : linksnappy.com

Est-il possible de configurer deux serveurs MySQL distincts en un seul serveur d'équilibrage de charge ? Ainsi, si l'un d'entre eux est surchargé, il passe au suivant.

Même question pour le serveur de traitement des requêtes http.

Autre question : De quel type de serveur ai-je besoin pour servir des milliers de requêtes à la fois ? (serveur http) Vous pouvez voir que le type de site dont je parle est un site de téléchargement. Le serveur meurt lorsque nous avons trop de demandes de téléchargement. Nous avons actuellement un intel XEON quad core 2.4ghz avec 4GB de ram.

3voto

TomTom Points 50635

Commençons par la fin :

nous avons actuellement intel xeo 2.4ghz avec 4gb de ram.

C'est peut-être cela le coupable. 4gb de RAM, c'est une blague pour un quad core, surtout si l'on traite des milliers de requêtes en parallèle. 4096mb RAM par 2000 requêtes (définition inférieure de milliers) laisse 2mb RAM par requête (en ignorant tout le reste).

Vous n'avez certainement pas de problème avec MySQL SEULEMENT. Le problème principal est que vous avez besoin d'une infrastructure complète qui permette de traiter plusieurs milliers de requêtes par seconde (ou que quelqu'un clarifie votre message), ce qui signifie beaucoup de bande passante réseau, beaucoup de bande passante IO, et un serveur avec beaucoup plus de mémoire vive que - désolé - une station de travail bas de gamme bon marché et dépassée (c'est tout à fait ça - ma station de travail de développeur avait 4gb il y a environ 3 ans, et est récemment passée à 8gb). Vous aurez également besoin d'un sous-système d'E/S pour gérer la charge, ce qui signifie probablement de nombreux disques dans un bon contrôleur RAID matériel (oubliez les logiciels ici - vous voulez quelque chose avec plus de fonctionnalités que votre raid logiciel).

  • HTTP Load balancing : facilement réalisable, soit en logiciel, soit en matériel (F5 a du matériel pour cela). En fonction de votre programmation (sessions), vous pouvez avoir besoin de sessions collantes afin que le même client se retrouve à nouveau sur la même boîte.

  • La première étape consisterait à séparer les fichiers de téléchargement du site web actuel (domaine / sous-domaine séparé) et, dans le processus suivant, à les déplacer sur des serveurs séparés. La base de données MySQL (enfin, la base de données - ceci n'est en aucun cas spécifique à MySQL) peut également être placée sur un serveur séparé.

  • 2000 requêtes par seconde ne nécessitent pas plusieurs serveurs, sauf si les requêtes sont complexes, ce qui n'est probablement pas le cas. La principale limitation de ces performances est très probablement le côté IO. Dans votre cas, je parie que vous couplez les 4 Go de RAM avec un sous-système de disque bas de gamme. Pour vous donner une idée de ce à quoi peut ressembler un serveur de base de données, ma propre base de données principale (qui stocke des données financières) dispose d'environ 10 disques à grande vitesse (Velociraptors, 10k RPM) pour s'assurer que la base de données (dans mon cas, un serveur SQL) ne devienne pas le goulot d'étranglement. J'ai encore des problèmes de performance du côté des entrées-sorties... je vais donc probablement déplacer certains éléments vers des disques SSD. Techniquement, à moins de ne faire que du reporting à partir de la mémoire (ce qui est très improbable avec votre configuration de 4 Go de RAM partagée pour tout), le sous-système IO est la principale limitation pour les bases de données.

En fin de compte, beaucoup de choses dépendent de votre programmation. Vous ne trouverez pas de réponse décente ici - cela demande beaucoup de planification et d'examen de votre code.

1voto

Stewart Macdonald Points 1033

Le nombre de requêtes par seconde est un chiffre magique qui n'a aucun sens. Je peux répondre à 10 000 demandes par seconde avec un serveur web exécutant hello world et à 0,0001 demande par seconde avec un bloatware derrière le même serveur web.

De quel type de serveur avez-vous besoin ? Vous avez besoin d'une personne qui sait ce qu'elle fait, pas d'un nouveau serveur. Mais pour répondre à votre question, il faut un grand serveur.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X