100 копий (locked) одного запроса убили мускул

Главные вкладки

Аватар пользователя orbisnull orbisnull 24 июля 2008 в 9:38

День добрый! Сегодня на одном из сайтов отвалилась база с сообщением

Unable to connect to database server.
The MySQL error was: Too many connections.

В MySQL по дефолту стоит 100 одновременных подключений + 1 для пользователя с правами SUPER. Подключившись под рутом к мускулу увидел 99 запросов в состоянии locked:

 SELECT data, created, headers , expire FROM cache WHERE cid = 'variables'      

и 1 в состоянии end:

UPDATE cache SET data = 'a:53 14:{s:10:\"Navigation\"

что и составило в сумме 100. + мой SHOW PROCESSLIST, под админом.
Поэтому вопрос из-за чего возникла эта проблема и как её избежать, может быть кто-то сталкивался с этим, или есть какието-то мнения?

Комментарии

Аватар пользователя Master of Tragedy Master of Tragedy 24 июля 2008 в 10:20

На пользователя root ограничения на количество подключений не распространяется. даже если ичерпан лимит root все равно сможет подключиться. Как выход, не использовать подключение к БД от имени root.

Аватар пользователя orbisnull orbisnull 24 июля 2008 в 11:28

Это понятно, двиг подключается под пользователем, под рутом я смотрел что происходит, вопрос от чего подвис этот запрос?

Аватар пользователя marazmus marazmus 30 июля 2008 в 14:15

Основная болезнь 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