web-dev-qa-db-fra.com

Comment voir combien de connexions MySQL sont ouvertes?

Comment savoir combien de connexions ont été ouvertes lors de la requête en cours via mysql_connect sous PHP sous Apache?

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

Mais je veux juste m'assurer que mysql_connect n'en commence pas un nouveau.

Je travaille avec un système existant qui contient de nombreux appels de fonction mysql_connect.

Existe-t-il un paramètre dans Apache ou un moyen de consigner ce nombre de connexions dans le fichier journal Apache ou MySQL?

34
Sahal

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

SHOW STATUS WHERE `variable_name` = 'Threads_connected'

ou vous pouvez faire un SHOW PROCESSLIST et trouver des valeurs uniques dans la colonne Id. Dans l'ancienne PHP API mysql, il existe aussi mysql_list_processes fonction qui fait la même chose que SHOW PROCESSLIST.

Mais d’abord, on devrait travailler pour vous. Et vous voudrez peut-être vérifier d'autres variables STATUS

47
Abhay

Il existe d'autres variables utiles concernant les connexions et, dans votre cas particulier, la variable Connections pourrait vous aider à déterminer si votre code crée 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    |
+-------------------+-------+
  • Les liaisons

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

  • Threads_cached

    Le nombre de threads dans le cache de threads.

  • 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 souhaiterez peut-être augmenter la valeur thread_cache_size. Le taux d’absence de mémoire cache peut être calculé sous la forme Threads_created/Connections.

  • Threads_running

    Le nombre de threads qui ne sont pas en veille. 

32
Kamil Dziedzic

Etat actuel des connexions:

mysqladmin status

Regardez Threads: count. Des informations plus détaillées sur les connexions en cours 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 |
+----+------+-----------+----+---------+------+-------+------------------+

FYImysqladmin -v -uroot -ppass processlist est un analogue de show full processlist.

Les commandes peuvent être réduites à 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
Alexander Yancharuk

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

3
gmhk

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

0
X10nD