La réponse courte est : Personne ne peut répondre à cette question, sauf vous.
La réponse longue est que l'évaluation comparative de votre charge de travail spécifique est quelque chose que vous devez entreprendre vous-même, car c'est un peu comme demander "Quelle est la longueur d'un bout de ficelle ?".
Un simple site web statique d'une page pourrait être hébergé sur un Pentium Pro 150 et servir des milliers d'impressions chaque jour.
L'approche de base que vous devez adopter pour répondre à cette question est la suivante essayez et voir ce qui se passe. Il existe de nombreux outils que vous pouvez utiliser pour mettre artificiellement votre système sous pression et voir où il cède.
En voici un bref aperçu :
- Mettez votre scénario en place
- Ajouter un contrôle
- Ajouter du trafic
- Évaluer les résultats
- Remédiation en fonction des résultats
- Rincer, répéter jusqu'à ce que vous soyez raisonnablement heureux
Mettez votre scénario en place
Fondamentalement, pour tester une charge, vous avez besoin de quelque chose à tester. Créez un environnement de test. Il doit être assez proche de votre matériel de production si possible, sinon vous devrez extrapoler vos données.
Configurez vos serveurs, comptes, sites web, bande passante, etc. Même si vous faites cela sur des machines virtuelles, cela ne pose aucun problème tant que vous êtes prêt à faire évoluer vos résultats.
Je vais donc configurer une machine virtuelle de puissance moyenne (deux cœurs, 512 Mo de RAM, 4 Go de disque dur) et installer mon équilibreur de charge préféré, haproxy
à l'intérieur de Red Hat Linux sur la VM.
Je vais également avoir deux serveurs web derrière l'équilibreur de charge que je vais utiliser pour tester l'équilibreur de charge. Ces deux serveurs web sont configurés de la même manière que mes systèmes réels.
Ajouter le suivi
Vous aurez besoin de certains paramètres à surveiller. Je vais donc mesurer le nombre de requêtes qui parviennent à mes serveurs web et le nombre de requêtes que je peux faire passer par seconde avant que les utilisateurs ne commencent à obtenir un temps de réponse de plus de deux secondes.
Je vais aussi surveiller l'utilisation de la RAM, du CPU et du disque sur le serveur. haproxy
pour s'assurer que l'équilibreur de charge peut gérer les connexions.
La manière de procéder dépend beaucoup de vos plateformes et n'entre pas dans le cadre de cette réponse. Vous devrez peut-être examiner les fichiers journaux du serveur Web, lancer des compteurs de performance ou vous fier à la capacité de rapport de votre outil de test de stress.
Quelques éléments à surveiller en permanence :
- Utilisation du CPU
- Utilisation de la RAM
- Utilisation du disque
- Latence du disque
- Utilisation du réseau
Vous pouvez également choisir d'examiner les blocages SQL, les temps de recherche, etc. en fonction de ce que vous testez spécifiquement.
Ajouter du trafic
C'est là que les choses deviennent amusantes. Vous devez maintenant simuler une charge de test. Il y a de nombreux outils qui peut le faire, avec des options configurables :
Choisissez un numéro, n'importe quel numéro. Disons que vous allez voir comment le système réagit avec 10 000 visites par minute. Le nombre que vous choisissez n'a pas d'importance, car vous allez répéter cette étape plusieurs fois, en ajustant ce nombre à la hausse ou à la baisse pour voir comment le système réagit.
Idéalement, vous devriez répartir ces 10 000 demandes sur plusieurs clients/nœuds de test de charge afin qu'un seul client ne devienne pas un goulot d'étranglement des demandes. Par exemple, la fonction de test de charge de JMeter Test à distance fournit une interface centrale à partir de laquelle il est possible de lancer plusieurs clients depuis une machine Jmeter de contrôle.
Appuyez sur le bouton magique Allez sur et regardez vos serveurs web s'effondrer.
Évaluer les résultats
Vous devez maintenant revenir aux mesures que vous avez recueillies à l'étape 2. Vous voyez qu'avec 10,000 connexions simultanées, votre haproxy
est à peine en train de transpirer, mais le temps de réponse avec deux serveurs web est légèrement supérieur à cinq secondes. Ce n'est pas cool - rappelez-vous que votre temps de réponse est de deux secondes. Nous devons donc procéder à quelques changements.
Remédier à
Maintenant, vous devez accélérer votre site web de plus du double. Vous savez donc que vous devez soit augmenter, soit diminuer.
Pour monter en puissance, il faut des serveurs web plus grands, plus de RAM, des disques plus rapides.
Pour passer à l'échelle supérieure, il faut acheter plus de serveurs.
Utilisez vos mesures de l'étape 2, et les tests, pour prendre cette décision. Par exemple, si vous avez constaté que la latence du disque était massive pendant les tests, vous savez que vous devez passer à la vitesse supérieure et acheter des disques durs plus rapides.
Si vous constatez que le processeur est resté à 100 % pendant le test, il est peut-être nécessaire d'ajouter des serveurs Web supplémentaires pour réduire la pression sur les serveurs existants.
Il n'y a pas de bonne ou de mauvaise réponse générique, il n'y a que ce qui est bon pour vous. Essayez de passer à l'échelle supérieure, et si cela ne fonctionne pas, passez à l'échelle inférieure. Ou pas, c'est à vous de voir et de sortir des sentiers battus.
Disons que nous allons changer d'échelle. Je décide donc de cloner mes deux serveurs web (ce sont des VM) et j'ai maintenant quatre serveurs web.
Rincer, répéter
Recommencez à partir de l'étape 3. Si vous constatez que les choses ne se passent pas comme prévu (par exemple, nous avons doublé les serveurs Web, mais les temps de réponse sont toujours supérieurs à deux secondes), recherchez d'autres goulots d'étranglement. Par exemple, vous avez doublé le nombre de serveurs Web, mais vous avez toujours un serveur de base de données médiocre. Ou encore, vous avez cloné davantage de machines virtuelles, mais comme elles se trouvent sur le même hôte physique, vous n'avez obtenu qu'une plus grande concurrence pour les ressources des serveurs.
Vous pouvez ensuite utiliser cette procédure pour tester d'autres parties du système. Au lieu de frapper l'équilibreur de charge, essayez de frapper directement le serveur web, ou le serveur SQL en utilisant un outil de benchmarking SQL .