Comment puis-je voir combien de connexions MySQL sont ouvertes?

Comment puis-je voir combien de connexions ont été ouvertes pendant la requête en cours via mysql_connect en PHP fonctionnant sur Apache?

Je sais que si j'appelle la fonction mysql_connect 100 fois avec les mêmes paramètres, elle retournera toujours le même lien de connexion. Il ne démarrera pas une nouvelle connexion une fois que la connexion existe déjà.

Mais je veux juste m'assurer que mysql_connect n'en démarre pas un nouveau.

Je travaille avec un système hérité qui contient de nombreux appels de fonction mysql_connect.

Est il n'y a aucun paramètre dans Apache ou est-il possible de consigner ce nombre de connexions dans le fichier journal Apache ou MySQL?

34
demandé sur Palec 2011-06-28 09:38:24

5 réponses

Je pense qu'il y a deux façons:

SHOW STATUS WHERE `variable_name` = 'Threads_connected'

Ou vous pouvez faire un SHOW PROCESSLIST et trouvez des valeurs uniques dans la colonne Id. Dans l'ancienne API PHP mysql, Il y a mysql_list_processes Fonction qui fait la même chose que SHOW PROCESSLIST, aussi.

Mais le premier devrait travailler pour vous. Et peut-être que vous pourriez vouloir vérifier sur d'autres variables D'état

46
répondu Abhay 2013-12-25 03:59:29

Il existe d'autres variables utiles concernant les connexions et, dans votre cas particulier, la variable Connections cela pourrait aider à savoir si votre code fait trop de connexions. Il suffit de vérifier la valeur avant et après l'exécution du code.

# mysql -e 'SHOW STATUS WHERE variable_name LIKE "Threads_%" OR variable_name = "Connections"'

+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| Connections       | 22742 |
| Threads_cached    | 1     |
| Threads_connected | 87    |
| Threads_created   | 549   |
| Threads_running   | 51    |
+-------------------+-------+
  • Connexions

    Le nombre de tentatives de connexion (réussies ou non) au serveur MySQL.

  • Threads_cached

    Le nombre de threads dans le thread cache.

  • Threads_connected

    Le nombre de connexions actuellement ouvertes.

  • Threads_created

    Nombre de threads créés pour gérer les connexions. Si Threads_created est grand, vous pouvez augmenter la valeur thread_cache_size. Le taux de manque de cache peut être calculé comme Threads_created / Connections.

  • Threads_running

    Le nombre de threads qui ne dorment pas.

29
répondu Kamil Dziedzic 2015-05-06 13:30:30

État actuel des connexions:

mysqladmin status

Regardez Threads: comte. Des informations plus détaillées sur les connexions actuelles peuvent être obtenues avec les commandes:

user@host:~$ mysqladmin -uroot -ppass extended-status | grep Threads
| Threads_cached                           | 0           |
| Threads_connected                        | 3           |
| Threads_created                          | 3           |
| Threads_running                          | 1           |

user@host:~$ mysqladmin -uroot -ppass processlist
+----+------+-----------+----+---------+------+-------+------------------+
| Id | User | Host      | db | Command | Time | State | Info             |
+----+------+-----------+----+---------+------+-------+------------------+
| 53 | root | localhost |    | Sleep   | 258  |       |                  |
| 54 | root | localhost |    | Sleep   | 253  |       |                  |
| 58 | root | localhost |    | Query   | 0    |       | show processlist |
+----+------+-----------+----+---------+------+-------+------------------+

Pour info mysqladmin -v -uroot -ppass processlist est analogique de show full processlist.

Les commandes peuvent être raccourcies à n'importe quel préfixe unique, et appelées simultanément:

user@host:~$ mysqladmin -v -uroot -ppass proc stat
+----+------+-----------+----+---------+------+-------+-----------------------+
| Id | User | Host      | db | Command | Time | State | Info                  |
+----+------+-----------+----+---------+------+-------+-----------------------+
| 53 | root | localhost |    | Sleep   | 951  |       |                       |
| 54 | root | localhost |    | Sleep   | 946  |       |                       |
| 65 | root | localhost |    | Query   | 0    |       | show full processlist |
+----+------+-----------+----+---------+------+-------+-----------------------+
Uptime: 1675  Threads: 3  Questions: 171  Slow queries: 0  Opens: 235  
Flush tables: 1  Open tables: 57  Queries per second avg: 0.102
9
répondu Alexander Yancharuk 2013-12-27 06:46:07

Vous pouvez utiliser la commande MySQL show processlist pour obtenir le nombre de connexions.

3
répondu gmhk 2011-06-28 05:40:49

Je ne pense pas que vous pouvez voir le nombre de connexion, mais peut limiter les connexions au serveur mysql.

0
répondu X10nD 2011-06-28 05:46:55