web-dev-qa-db-fra.com

De quel type de serveur ai-je besoin pour gérer 10 millions de requêtes et requêtes mySQL par jour?

Je suis novice en administration de serveurs et je recherche un service d'hébergement puissant pour héberger mon nouveau site web. Ce site Web est essentiellement le back-end d'un jeu en ligne mobile et il:

  • gérer jusqu'à 10 millions de requêtes HTTPS et de requêtes mySQL par jour
  • stocker jusqu'à 2000 Go de fichiers sur le disque dur
  • transférer probablement 5000 Go de données vers et depuis par mois
  • il fonctionne sur PHP et mySQL
  • avoir 10 millions d'enregistrements dans la base de données mySQL, pour chaque enregistrement il y a 5-10 champs, environ 100 octets chacun

Je ne sais vraiment pas de quel type de serveur j'ai besoin pour gérer ces exigences, ma question est:

  1. De quel CPU/RAM ai-je besoin pour un serveur dédié ou un VPS?
  2. Quelles sociétés d'hébergement sont capables d'offrir ce type de serveur dédié ou VPS?
  3. Et le cloud computing? J'ai fait des recherches sur Amazon EC2 mais cela me semble compliqué. Et j'ai contacté Rackspace mais étrangement, ils ont dit que Cloudsites ne convenait pas à mes besoins. Je me demande s'il existe une autre société d'hébergement cloud.
  4. Une autre méthode alternative?
23
Calvin

Un bureau pas cher?

Entrons dans le calcul.

  • 10 millions de demandes.
  • Cela se décompose à 416667 demandes par heure.
  • Cela se décompose à 6944 requêtes par minute.
  • Cela revient à 116 requêtes par seconde.

Doublez cela (charge maximale) et nous parlons d'une charge qu'un ordinateur de bureau quad core bon marché peut gérer SI les requêtes sont assez simples, et vous ne dites pas vraiment à quel point elles sont complexes.

  • 5000 Go par mois est trivial - sérieusement, les mêmes calculs s'appliquent.
  • Cela tombe à 208 Go/jour
  • Cela tombe à 8 Go/heure
  • Cela tombe à 148 Mo/minute
  • Cela tombe à 2,5 Mo/seconde, 25 Mbits. Double pour le pic - 50Mbit, trivial pour tout centre d'hébergement. Cela vous coûtera cependant.

  • Stockez 2000 Go sur le disque dur. C'est-à-dire des disques durs de 2x2000 Go dans un RAID? Sauf si c'est pour la base de données, il y a beaucoup d'E/S complexes, alors c'est quelque chose entre une douzaine de disques et BEAUCOUP de 73 Go à 15 000 tr/min SAS disques dans un RAID 10 (environ 60 disques) pour obtenir les E/S nécessaires - cette question ne peut pas être répondue sans BEAUCOUP plus d'informations sur les modèles d'accès aux données.

  • Exécute PHP et MySQL - Mon téléphone portable peut le faire;) La question est de savoir à quel point l'application est complexe. MySQL PEUT ou PEUT NE PAS être une solution acceptable ici, BTW l. - cela nécessiterait plus de tests. Il y a une raison pour laquelle certaines personnes utilisent encore d'autres bases de données commerciales plus importantes.

  • De quel CPU/Ram ai-je besoin pour un serveur dédié ou un VPS?

On dirait que cela dépend de la logique (combien de calculs dans la partie PHP, l'intelligence ou le manque de programmeurs et beaucoup d'autres questions).

Sérieusement, il s'agit d'une configuration non triviale. Demandez à des spécialistes de l'examiner.

Fondamentalement, vous devez descendre et faire vos devoirs. Beaucoup de questions ne peuvent pas être répondues sous cette forme. Surtout parce que vous ne semblez pas vous soucier de vos données ...

  • Sauvegardes?
  • Pas de plan d'urgence? Je veux dire, les serveurs meurent - vous êtes donc d'accord avec le site étant en panne pendant des jours alors que le remplacement est configuré?
33
TomTom

Pour ajouter une partie de mon expérience qui peut être utile:

  • Comme TomTom l'a mentionné, il est difficile/impossible de donner des spécifications exactes car cela dépend en grande partie de la conception et de la mise en œuvre de votre application. Le matériel qui me donne ou demande à quelqu'un d'autre X requêtes/s peut ne pas fonctionner correctement pour vous.
  • J'ai un serveur MySQL dédié bas de gamme (Intel Core2 Duo E4600 2,40 GHz, 4 Go de RAM) servant une moyenne de 100 requêtes/sec (près de 10 millions/jour) avec un taux d'inactivité du processeur de 90%. Mis à part quelques modifications de base de la configuration, il fonctionne bien en raison de sa forte lecture (+ 95% de lectures) et le jeu d'enregistrements actif est facilement contenu en mémoire. Tenez compte de la taille de votre ensemble actif lorsque vous choisissez la quantité de serveur RAM car cela peut faire une grande différence. Assurez-vous de bien comprendre la différence entre la taille de votre base de données et la taille du jeu d'enregistrements actif. Par exemple, mes bases de données totalisent environ 7 Go, mais l'ensemble actif ne compte probablement que quelques 100 Mo.
  • De même, j'ai un serveur Apache de spécifications similaires qui traite environ 1 million de demandes par jour, ce qui a un taux d'inactivité moyen de 95%. Les demandes sont un mélange de données cartographiques très simples AJAX requêtes et pages MediaWiki plus complexes.
  • L'analyse comparative de votre application spécifique est un bon début pour essayer de déterminer exactement ce dont vous avez besoin. Vous ne voulez pas sous-estimer mais une surestimation peut être tout aussi mauvaise en raison du gaspillage potentiel d'argent et d'efforts.
  • Considérez non seulement le taux de demande moyen mais le taux de pointe. Vous ne voulez pas d'un serveur qui puisse à peine gérer le taux moyen, car les taux de demande peuvent varier considérablement au cours de la journée, de la semaine et du mois. Par exemple, je peux obtenir 3-4x le trafic pendant les heures de pointe le week-end comme je le fais dans les heures minimales pendant la semaine. Son ampleur dépendra de votre application et de votre base d'utilisateurs.
  • Pouvez-vous mettre en cache vos requêtes de base de données/HTTP? Cela peut considérablement augmenter votre taux de demande avec du matériel moins cher/moins selon la quantité que vous pouvez mettre en cache.
  • Considérez vos options de mise à l'échelle pour la croissance future maintenant plutôt que plus tard. Une bonne option peut être d'utiliser une mise à l'échelle horizontale qui vous permettrait de commencer avec un minimum de matériel et de grandir facilement selon les besoins.
  • Une conception appropriée de votre couche d'application peut avoir un effet énorme sur ses performances finales. Une requête SQL incorrecte sur une table sans index peut être beaucoup plus lente qu'un ordre correctement conçu. De même, les serveurs Apache/MySQL mal configurés peuvent être beaucoup plus lents que lorsqu'ils sont correctement configurés.
7
uesp