Подтвердить что ты не робот

Как я могу узнать, сколько подключений MySQL открыто?

Как узнать, сколько соединений было открыто во время текущего запроса через mysql_connect в PHP, запущенном на Apache?

Я знаю, что если я вызову mysql_connect функцию 100 раз с теми же параметрами, она всегда вернет ту же ссылку соединения. Он не будет запускать новое соединение после того, как соединение уже существует.

Но я просто хочу убедиться, что mysql_connect не запускает новый.

Я работаю с устаревшей системой, которая содержит много вызовов функций mysql_connect.

Есть ли какой-либо параметр в Apache или есть ли способ зарегистрировать это количество подключений в файле журнала Apache или MySQL?

4b9b3361

Ответ 1

Я думаю, что есть несколько способов:

SHOW STATUS WHERE `variable_name` = 'Threads_connected'

или вы можете сделать SHOW PROCESSLIST и узнать уникальные значения в столбце Id. В старом PHP API mysql есть функция mysql_list_processes, которая также делает то же самое, что и SHOW PROCESSLIST.

Но сначала нужно работать для вас. Возможно, вам захочется проверить другие переменные STATUS

Ответ 2

Существуют и другие полезные переменные в отношении соединений, а в вашем конкретном случае переменная Connections может помочь выяснить, слишком ли сложен ваш код. Просто проверьте его значение до и после запуска кода.

# 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    |
+-------------------+-------+
  • <сильные > Соединения

    Количество попыток подключения (успешно или нет) на сервере MySQL.

  • Threads_cached

    Число потоков в кэше потоков.

  • Threads_connected

    Число открытых в настоящее время подключений.

  • Threads_created

    Число потоков, созданных для обработки соединений. Если Threads_created является большим, вы можете увеличить значение thread_cache_size. Скорость пропуска кеша может быть рассчитана как Threads_created/Connections.

  • Threads_running

    Число нитей, которые не спят.

Ответ 3

Текущее состояние соединений:

mysqladmin status

Посмотрите на Threads: count. Более подробную информацию о текущих соединениях можно получить с помощью команд:

[email protected]:~$ mysqladmin -uroot -ppass extended-status | grep Threads
| Threads_cached                           | 0           |
| Threads_connected                        | 3           |
| Threads_created                          | 3           |
| Threads_running                          | 1           |

[email protected]:~$ 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 |
+----+------+-----------+----+---------+------+-------+------------------+

FYI mysqladmin -v -uroot -ppass processlist является аналогом show full processlist.

Команды могут быть сокращены до любого уникального префикса и вызываться одновременно:

[email protected]:~$ 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

Ответ 4

Вы можете использовать команду MySQL show processlist, чтобы получить количество подключений.

Ответ 5

Я не думаю, что вы можете увидеть количество соединений, но можете ограничить соединения с сервером mysql.