День добрый! Сегодня на одном из сайтов отвалилась база с сообщением
The MySQL error was: Too many connections.
В MySQL по дефолту стоит 100 одновременных подключений + 1 для пользователя с правами SUPER. Подключившись под рутом к мускулу увидел 99 запросов в состоянии locked:
и 1 в состоянии end:
что и составило в сумме 100. + мой SHOW PROCESSLIST, под админом.
Поэтому вопрос из-за чего возникла эта проблема и как её избежать, может быть кто-то сталкивался с этим, или есть какието-то мнения?
Комментарии
На пользователя root ограничения на количество подключений не распространяется. даже если ичерпан лимит root все равно сможет подключиться. Как выход, не использовать подключение к БД от имени root.
Это понятно, двиг подключается под пользователем, под рутом я смотрел что происходит, вопрос от чего подвис этот запрос?
Блин, сегодня опять повторилось. Люди, не проходите мимо, направьте на путь истинный пожалуйста!
Перевести табличку cache в InnoDB?
А в чем преимущество перед MyISAM? А то хочется понять на будующее.
Основная болезнь MyISAM - блокировка ВСЕЙ таблицы на время вставки новой записи. Если вставляются связанные записи в несколько таблиц, то блокировка идет на все таблицы. InnoDB лочит только конкретную запись, а не всю таблицу, за счет того, что работает транзакциями. Поэтому, если хостер позволяет, можно таблички, которые постоянно лочатся на запись (особенно cache), перевести в InnoDB, а таблички, по которым идут основные выборки, оставить в MyISAM, потому что он быстрее на выборках. Cache - большая и жирная таблица, перестанет постоянно блокироваться, и сайт немного ускорится.
Я не силен в MySQL, к примеру можно почитать эту ветку форумов SQL.ru - http://www.sql.ru/forum/actualthread.aspx?tid=282624
И еще здесь: http://www.opennet.ru/openforum/vsluhforumID9/5346.html