Mise à niveau du server de 5 ans

Je cherche à mettre à niveau un server pour une application Web. Actuellement, l'application est très lente. Nous avons apporté quelques ajustements à mysql (c'est un autre problème en soi) et nous avons effectué quelques ajustements afin que les requêtes les plus lourdes soient exécutées sur une copy de la database sur un autre server a été une sauvegarde, mais cela ne durera pas plus longtime et nous cherchent à mettre à niveau.

Actuellement, les CPU des servers sont (4) Intel (R) XEON (TM) CPU 2.00GHz, avec 1 concert de ram.

La database est 442,5 MiB, avec environ 1 743 808 loggings.

Il existe deux parties du programme, l'un, le côté a, insère et met à jour la plupart des données. Côté b, lit datatables et effectue des mises à jour mineures.

Actuellement, notre plus grand jour pour le côté a est de 800 users (de 40 000 users toute l'année) imputant le système. Et notre Side b est actuellement inconnu, mais nous avons un total de 1000 clients.

Le système est susceptible de s'adapter à 5000 clients de côté b, avec environ 300 000 users.

La database actuelle est de 5 ans, donc nous pouvons probablement nous attendre à ce que la database se développe assez rapidement, peut-être doublé chaque année (ce qui nous permet d'archiver les loggings les plus anciens si cela se rapporte).

Donc, étant donné que nous devrions get un server pour chaque côté de l'application, le côté étant le maître, le côté b étant l'esclave, toutes les mises à jour effectuées sur le côté b sont routières sur le côté a.

Donc, la question est-elle que dois-je get 2 de ces ou 1?

  • 2 x Intel Nehalem Xeon E5520 2.26Ghz (8 Cores)
  • Mémoire 12GB DDRIII
  • Disque dur 500 Go SATAII
  • Vitesse du port de 100Mbps

Et naturellement, je devrais avoir une sauvegarde redondante, donc il pourrait être 4 d'entre eux.

Actuellement … 1 concert de ram.

1 Go, pour une database chargée? Vraiment? La taille actuelle de votre database est de 445 Mo. Bien que ce soit plus petit que votre 1 Go de RAM, append plus de RAM fournirait de l'espace pour les index, les journaux de transactions et les sets de travail de requêtes pour vivre en memory. Si vous parvenez à seulement 4 Go de RAM, je parie que vous trouvez que votre sous-système de disque ne count plus et que votre CPU est déjà adéquate.

Cela dit, j'aimerais encore regarder un nouveau server. Les disques durs ne durent que si longtime et vous avez encore besoin d'get des objects sur le disque finalement. Il est également possible qu'une fois que tout soit en RAM, vous trouvez que vous voulez vraiment plus de puissance du processeur. Alors, avancez …

Dois-je avoir … 500 Go SATAII HDD

Cher Seigneur, non. Vous voulez au less 4 disques (count 'em) dans ce système (de plus, bien sûr, serait mieux), et vous voulez des disques SAS si vous pouvez les payer. Vous n'avez pas besoin de beaucoup d'espace disque dur en fonction de ce que vous avez montré, alors obtenez les disques 10K les plus petits (et donc les less chers) que vous pouvez, mettez-les dans une configuration RAID 10 et assurez-vous d'avoir un vrai matériel basé sur RAID (malheureusement, attendez-vous à append près de 1000 $ au coût total, ou vous n'avez pas acheté un bon controller). Vous devriez pouvoir mettre tout cela dans une boîte 1U, pas de problème, mais vous voudrez peut-être dimensionner une boîte 2U avec quelques baies supplémentaires pour permettre une croissance future. Le coût total d'un système comme celui-ci serait de 4 000 $ à 5000 $.

Si un système avec 4 disques SAS semble plus coûteux que ce que vous vouliez, allez parler à votre patron et dites-lui que vous pouvez retenir le nouveau server cette année en ajoutant de la RAM à l'ancien s'il peut vous donner l'argent besoin d'un véritable server l'année prochaine. Les chances sont qu'il veut faire les deux: laissez-vous acheter la RAM cette année et vous rendre à bon marché sur le server l'année prochaine. Mais même si vous devez vous contenter de SATA sur SAS, fermez au less 4 disques plus RAID 10 basé sur le matériel.

L'E5520 est-elle la seule puce possible? C'est un peu vieux maintenant et vous verrez des avantages de performance pour les nouveaux chips de la série 56xx. En outre, cette NIC sera presque certainement 1Gbps pas 100Mbps, les servers ne disposent plus de 100Mbps autant que je le connais. Je considérerais également utiliser une paire de disques SAS 10krpm miroirs pour le travail DB si j'étais vous aussi. Oh et assurez-vous d'utiliser une version 64 bits de Centos, idéalement, une version récente telle que 5.6 ou plus.

En ce qui concerne votre question actuelle, bien, la machine unique que vous avez spécifiée sera considérablement plus rapide que votre machine existante. Je serais tenté d'essayer d'utiliser une seule machine plus pour les spécifications que j'ai mentionnées ci-dessus, cela vous permettra d'investir dans les meilleurs disques, etc., si vous sentez que vous avez besoin d'une deuxième machine, je pense à cela à l'époque .

Vous voudrez peut-être améliorer le sous-système de disque, ce qui est probablement votre goulot d'étranglement. Vous n'indiquez pas votre operating system, mais il existe des outils sur tous pour tester la dureté de votre disque.

Deux-drive RAID 1 pour les journaux de transactions, et un 3-drive RAID 5 pour le DB serait idéal à partir de ce que vous décrivez. Utilisez au less les disques SAS si vous le pouvez.

Je suggérerais de passer un peu de time pour comprendre pourquoi votre configuration actuelle est une statistique «lente» et plus précise sur le nombre et le type de requêtes qui se déroulent de chaque côté. Surtout en considérant que vous pourriez avoir une augmentation de 10 fois dans le trafic, si vous essayez simplement de faire une échelle aveugle, vous risqueriez de réduire la mauvaise chose et de devoir resize l'année prochaine en consacrant beaucoup plus de time / d'argent que nécessaire.

Quelques choses précises, je commencerais à regarder:

  • Obtenez une meilleure compréhension de votre trafic actuel. Non seulement combien, mais combien de chaque type. Vous avez déjà l'printing de l'avoir divisé par lecture / écriture, mais aussi d'autres types et de la façon dont chacun affecte les performances (par exemple, en cache / non cached, requêtes lentes / rapides, etc.). Le risque de considérer une catégorie générale comme «les users» est que les différents types de trafic peuvent augmenter les mêmes (par exemple, vos lectures peuvent augmenter plus rapidement que vos écrits) et les types varieront également différemment (ex: les échelles de réplication MySQL se lisent bien mais n'écrit pas). La surveillance du trafic sur des semaines / mois vous procurera également de meilleures tendances sur votre future croissance du trafic.
  • Découvrez le goulot d'étranglement pour votre server actuel. Est-ce quelque chose de simple, comme simplement CPU / Mémoire ou s'il existe des problèmes plus subtils, comme la design d'applications / bases de données. Ne pas dépenser beaucoup d'argent sur CPU / RAM lorsque tout ce dont vous avez besoin est juste un meilleur index de table.
  • Benchmark / profil de votre système pour savoir quelles sont ses limites. Ceci est important non seulement pour savoir quand vous devrez resize / éteindre, mais aussi pour quantifier les performances du système lorsque vous modifiez les parameters matériels / logiciels. Cette dernière révision de l'application a-t-elle échoué sa performance 25%? A-t-on modifié la configuration de MySQL? Sauf mesure que vous ne le savez peut-être jamais.
  • Selon la lenteur de votre système actuel et votre budget de mise à niveau, je considérerais simplement avoir un nouveau server tout de suite. Au fur et à mesure que vous configurez le nouveau server, effectuez des tests / tests de base pour voir quel type d'augmentation de performance vous obtiendrez. Si vous avez de la chance, vous pouvez find une augmentation si importante que la question de savoir si d'autres servers seront répondu pour vous.