J'ai une application web qui doit gérer une simultanéité élevée, comme 100 utilisateurs interrogeant les mêmes 5 tables (l'une d'entre elles, renvoie plus de 500 lignes) et d'autres utilisateurs insérant dans ces tableaux en même temps.Ce qui serait une bonne configuration bonecp pour une haute simultanéité
Lorsque trop d'utilisateurs utilisent, la concurrence est trop élevée, mon application se bloque et je dois redémarrer tomcat. Je ne pouvais pas trouver beaucoup dans les journaux. Quand j'exécute "afficher la liste des processus"; dans MySQL, il y a des processus pour chaque connexion et la plupart sont avec le statut "Query" ... avant que l'application ne se bloque, un processus par un, passe en statut "Sleep", jusqu'à ce que tous les processus aient ce statut et l'application se bloque.
Il est très difficile de diagnostiquer ce qui se passe ... J'essaie de mieux synchroniser le code, sans aucun succès ... eh bien, je suis ici pour demander des opinions sur si j'utilise un bon bonecp configuration à utiliser dans cet environnement:
<property name="bonecp.idleMaxAgeInMinutes">10</property>
<property name="bonecp.maxConnectionAgeInSeconds">3000</property>
<property name="bonecp.idleConnectionTestPeriodInMinutes">5</property>
<property name="bonecp.connectionTestStatement">/* ping */ SELECT 1</property>
<property name="bonecp.partitionCount">2</property>
<property name="bonecp.acquireIncrement">2</property>
<property name="bonecp.maxConnectionsPerPartition">12</property>
<property name="bonecp.minConnectionsPerPartition">5</property>
<property name="bonecp.statementsCacheSize">50</property>
<property name="bonecp.releaseHelperThreads">3</property>
Selon ma configuration MySQL, j'utilise par défaut de tout, sauf ce deux:
autocommit = 0
innodb_thread_concurrency = 8
(le serveur a 3 CPU et 1 disque)
Est-ce que vous me conseilleriez de changer quelque chose? Merci!
merci pour le partage –