11
votes

Je suis confus sur les connexions MySQL simultanées

Alors, j'ai lu un livre dans MySQL et dit qu'il y a une limite sur le nombre d'utilisateurs simultanés pouvant accéder à une base de données.

Cela signifie-t-il que si j'ai 20k utilisateurs de navigation dans mon application Web simultanément, mon application Web ne parviendra pas à charger les données de ma base de données? Parce que mon application Web accède à la base de données chaque fois que mon site Web charge.


7 commentaires

Linux et Solaris aussi loin que je connais ne peuvent gérer que 10 000 connexions simultanément. Vous devez examiner le serveur d'équilibrage et vous finirez probablement par utiliser Haproxy pour équilibrer entre des bases de données.


Même si votre MySQL pourrait connecter 20k simultanément - il ne serait pas en mesure de traiter toutes les requêtes.


Je suis d'accord avec vous, mais je répondais juste à la question, peut-être parfois cela aidera quelqu'un de plus expérimenté.


@ Pentium10: hehe ;-) Ok.


Je veux savoir comment les grandes sites Web gèrent des connexions simultanées comme Yahoo ou Google. juste à des fins académiques ..


@Raymond Ho: C'est un grand défi et il ne peut être décrit en deux mots. Encore plus - il s'agit de nombreuses quêtes connexes résolues dans le processus de développement de projets. Vous ne pouvez pas écrire du projet Scratch le projet qui sera capable de gérer 20 000 utilisateurs simultanés. Vous devez écrire "quelque chose" et résoudre des goulots d'étranglement dès qu'ils apparaissent. C'est ce que font Facebook, Twitter, Google et d'autres entreprises.


@ Pentium10: à la fois sur Linux et Solaris, il s'agit simplement d'une question de réglage. J'ai vu des connexions simultanées de 400k de 400k via Haproxy. que est beaucoup!


6 Réponses :


1
votes

Pour moi, je pense au moins qu'il est impossible car le temps d'exécution / traitement comptage dans Milli secondes


0 commentaires

13
votes

utilisateurs 20k Chargement d'une page à la même heure ? C'est tout à fait beaucoup - et votre serveur Web n'acceptera probablement pas que de nombreuses demandes simultanentes elles-mêmes (par exemple, Apache n'accepte généralement que entre 200 et 400 demandes parallèles) .

La limite de connexion est le nombre maximal d'utilisateurs pouvant être connecté à votre base de données à la même heure - si chaque page a besoin de 100 ms à générer, un utilisateur ne sera connecté que pour moins de 100 ms.
et si vous vous connectez à votre base de données juste lorsque vous devez effectuer votre première requête SQL et déconnecter immédiatement après votre dernière requête SQL, cela peut réduire le temps pendant lequel votre serveur Web est connecté à la DB.

Si vous avez des utilisateurs de lisant du contenu de votre site Web, vous pouvez envisager de:

  • chargez une page (peut-être 100 ms sur votre serveur)
  • Ne faites rien d'autre que lire pendant quelques minutes (qui ne prend absolument aucune ressource sur votre serveur)


    En tant que Sidenote: assez longtemps avant d'obtenir 20k Connections simultanées de 20k (ce qui signifie environ 20 000 connexions par seconde ou plus!) , vous devrez probablement faire face à plusieurs problèmes liés à la mise à l'échelle ... / p>


2 commentaires

Tout dépend si les requêtes de la base de données prennent du temps ou non. Certains sites sont tellement mal conçus que chaque coup apporte une (ou plusieurs) requêtes de base de données et les plusentes. Sur ces sites, vous pouvez facilement accéder au point où vous avez presque autant de demandes simultanées sur la DB, car il existe des utilisateurs simultanés.


Est-ce lié aux questions exécutées par l'application? Je suppose que mon hôte prend en charge jusqu'à 25 connexion simultanée et que je n'ai qu'un seul utilisateur, mais l'application exécute environ 75 requêtes MySQL.



1
votes

Après avoir lu, j'ai trouvé cet extrait

20.000 utilisateurs simultanés est 20.000 requêtes de base de données simultanées ... Un utilisateur lire un post sur votre site, devrait ne pas être compté dans l'utilisateur simultané nombre ... il est connecté à votre site, mais il ne nécessite rien de la base de données ... maintenant, s'il clique Dans un lien, la base de données effectuera un Requête et, alors, cet utilisateur devrait être compté dans les utilisateurs simultanés Numéro ... seulement si 20.000 utilisateurs cliquez sur quelque part sur votre site au même Temps vous aurez 20.000 concurrents Utilisateurs


0 commentaires

3
votes

Si vous obtenez un Trop de connexions Erreur lorsque vous essayez de vous connecter au serveur MySQLD, cela signifie que toutes les connexions disponibles sont utilisées par d'autres clients.

Le nombre de connexions autorisées est contrôlé par la variable max_connections . Sa valeur par défaut est 100. Si vous devez prendre en charge plus de connexions, vous devez définir une valeur plus grande pour cette variable.

Vous devez demander à vos administrateurs système de faire ces modifications uniquement si nécessaire.


1 commentaires

Et puisque MySQL est livré avec de nombreux fichiers INI préconfigurés pour déterminer quel fichier INI vous utilisez et vous devez modifier (sous Windows), cliquez avec le bouton droit de la souris sur le service MySQL et choisissez Propriétés. La propriété Chemin vous indiquera quel fichier INI vous utilisez.



1
votes

La base de données est un très bon candidat pour le cou de la bouteille. Si vous avez un tel trafic sur votre serveur, vous devez vous concentrer sur la rétrogradation du nombre de connexions à la base de données. Page et la mise en cache de données peuvent faire du miracle dans cette affaire - elle a fait dans mon cas ...


0 commentaires

1
votes

En supposant que vous disposez d'une architecture d'application Web standard, avec une base de données à l'arrière et du ou des serveurs Web Obtenir des données de la base de données, chaque instance du serveur Web serait généralement un utilisateur de base de données unique.

du point de vue de votre application, chaque utilisateur distant est un utilisateur, mais à partir du point de vue de la base de données, votre application est un utilisateur unique.

du point de vue du serveur Web, le nombre important de performances est le nombre d'opérations par seconde qu'il est demandé à faire. Par exemple, si vous avez un site Web de blog, les utilisateurs se liront généralement pour une minute entre les clics, puis 10 000 utilisateurs actifs pourraient générer un taux de demande de 10 000/60 = 166 demandes par seconde, ce qui serait généralement bien dans les capacités de Apache. (Vous devez prendre en compte le mélange de performances de votre application à partir du point de vue de votre serveur Web: heure de la CPU, bande passante de réseau, bande passante de disque, consommation de mémoire, ... pour obtenir une image plus complète et précise de la manière dont une application Web peut faire échec dans un Server Web unique.)

Si vous avez suffisamment de charges afin que vous ayez besoin de plusieurs serveurs Web avec E.G. Un équilibreur de charge en face, puis chaque serveur Web serait un utilisateur de base de données. Si vous avez échoué au point où vous avez besoin de 10 000 serveurs Web pour entretenir votre clientèle, vous aurez généralement dû recourir à d'autres technologies pour résoudre les autres problèmes de mise à l'échelle de la performance de la base de données.


0 commentaires