Сегодня я столкнулся с проблемой, связанной с исчерпанием возможностей MySQL по подключению к базе данных.
Я получаю следующую ошибку: Error establishing a database connection
. Когда я пытаюсь получить доступ к /phpma
, я получаю эту ошибку: phpMyAdmin - Error #1040 - Too many connections
.
Я искал, как изменить my.cnf
, чтобы увеличить количество подключений, но я думаю, что я уже сделал это некоторое время назад и с тех пор не было никаких проблем. Поэтому я немного беспокоюсь, что эти подключения являются своего рода уязвимостью.
Я работаю на CentOS. Есть ли какой-то простой способ проверить эти соединения? Есть ли что-то, на что мне следует обратить внимание, или, может быть, просто способ отбраковки соединений, которые были активны слишком долго (MySQL вообще так работает?).
решение1
Чтобы увидеть, какие потоки запущены в MySQL, из Linux:
root@myserver:~> mysqladmin processlist
Эквивалентный этому запрос MySQL будет выглядеть так:
root@myserver:~> mysql
mysql> SHOW FULL PROCESSLIST\G
Также, проверьтеПроверка информации о потокечтобы увидеть, что означает вывод. В частности:
КомандаиСостояниеуказать, что делает поток.
Большинство состояний соответствуют очень быстрым операциям. Если поток остается в данном состоянии в течение многих секунд, может быть проблема, которую необходимо исследовать.
Главное — просмотреть список процессов MySQL и определить, не выглядит ли что-нибудь подозрительным, учитывая характер вашей среды, например, длительно выполняющиеся процессы или большое количество процессов.
решение2
Используйте эту команду и выведите список запущенных приложений MySQL,
ps -aux | grep 'mysql'
затем запустите нужный вам MySQL на порту по умолчанию "3306"