#mysql #multithreading
#mysql #многопоточность
Вопрос:
Я работаю над веб-приложением (небольшими частями), и я смотрел на то, как программа обрабатывает подключения к MySQL. Добавьте немного отладочного кода, чтобы просто отслеживать статус, и я получаю что-то вроде этого:
$query = 'SHOW STATUS WHERE variable_name LIKE "Threads_%" OR variable_name = "Connections"';
$result = mysqli_query($GLOBALS["___mysqli_ston"], $query);
while ($row = mysqli_fetch_array($result)) {
echo print_r($row);
}
Массив ( [0] => Соединения [имя_переменной] => Соединения [1] => 1368 [Значение] => 1368 ) 1 массив ( [0] => Threads_cached [имя_переменной] => Threads_cached [1] => 0 [Значение] => 0 ) 1 Массив ([0] => Threads_connected [имя_переменной] => Threads_connected [1] => 1 [Значение] => 1 ) 1Array ([0] => Threads_created [имя_переменной] => Threads_created [1] => 1367 [Значение] => 1367 ) 1Array ([0] => Threads_running [имя_переменной] => Threads_running [1] => 1 [Значение] => 1 ) 1
Создаваемые соединения и потоки постоянно увеличиваются, но запущенные потоки всегда остаются на одном. Я посмотрел на ПЕРЕМЕННЫЕ SHOW, ТАКИЕ КАК ‘max_user_connections’ на сервере, и для него установлено значение 0. Это проблема, когда создается так много подключений и потоков?
Спасибо.
Ответ №1:
Переменные Connections и Threads_created всегда увеличивают счетчики. Если вы хотите увидеть текущие подключения — используйте переменную Threads_connected или отправьте запрос SHOW FULL PROCESSLIST
.