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

23

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érez 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?
Calvin
la source
nous avons contourné cela avec 2 serveurs linux avec 8 Go de RAM, le mysql est un cluster mysql et la base de données est stockée rapidement en mémoire, le cpu n'est jamais vraiment si vous utilisez une bonne distribution, et le disque ne devra être utilisé que prendre des instantanés toutes les heures vous donne une redondance en cas d'échec. vous pouvez également souhaiter que mysqltuner soit installé afin que vous puissiez garder un œil sur les index, etc. et tirer le meilleur parti de tout et également ajouter de nombreux index et garder un journal sur les requêtes lentes, car pour le Web, cela peut être vraiment bon marché, il suffit d'ajouter une charge équilibreur à l'avant pour répartir le trafic
moins4
Pourquoi ne pas utiliser un service cloud? Azure, Amazon, RackSpace, GoGrid, Heroku?
bbqchickenrobot

Réponses:

33

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 de pointe) 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 il y a quelque chose entre une douzaine de disques et BEAUCOUP de disques SAS de 73 Go à 15 000 tr / min dans un RAID 10 (environ 60 disques) pour obtenir les E / S nécessaires - ce la question ne peut pas être répondue sans BEAUCOUP plus d'informations sur les modèles d'accès aux données.

  • Fonctionne 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é?
TomTom
la source
Merci pour votre réponse. le php est simple, je suppose que le fardeau principal est sur mySQL, j'ai testé quelques requêtes mySQL sur mon ordinateur portable (Core2 Duo) avec WAMP sur Windows. avec 10 millions d’enregistrements dans mySQL, chaque requête coûte en moyenne 0,1 seconde. à quel point Quad Core est-il plus puissant pour gérer les requêtes mySQL?
Calvin
2
Oubliez le quad core. Votre ordinateur portable SUCKS in IO - et IO est l'endroit où les bases de données ne sont pas limitées. Vous avez UN disque dur, c'est-à-dire LENT et ROBUSTE (latop). Les serveurs utilisent PLUSIEURS disques durs RAPIDES (mais pas robustes). J'utilise un serveur quad core SQL Server fron MS et je peux gérer plus de 500 lots par seconde sur des sélections simples (un lot étant une sélection) sans maximiser le processeur - mais j'obtiens BEAUCOUP d'activité de disque sur un sous-système de disque qui est peut-être plus de 30 fois plus rapide que la vôtre (et ce n'est pas encore impressionnant). Les disques sont la limite. Plus une programmation appropriée.
TomTom
1
Votre trafic SSL devra être chiffré / déchiffré, vous voudrez peut-être le décharger sur un équilibreur et faire un proxy inverse sur un serveur http normal. Cela devrait réduire la latence. vous pouvez également vous chiffrer dans le matériel aussi ....... fr.wikipedia.org/wiki/SSL_acceleration si le budget n'est pas un problème pour votre base de données, utilisez ramsan.com/success/ccpgames.htm
The Unix Janitor
7

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 car il est lourd en lecture (+ 95% de lectures) et l'ensemble d'enregistrements actif est facilement contenu en mémoire. Tenez compte de la taille de votre ensemble actif lorsque vous choisissez la quantité de RAM du serveur, 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 requêtes AJAX de données cartographiques très simples et de 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.
  • Tenez compte non seulement du taux de demande moyen mais du 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.
uesp
la source