Есть сервер баз данных на mysql. Некоторые таблицы большие, поэтому секционированы на 100 субтаблиц. Столкнулся с проблемой, что mysql уперся в лимиты открытых файлов. Лимиты увеличил и начал наблюдать за файлами открыми mysql командой lsof -u mysql | wc -l. Ну и через grep просматривал открытые файлы конкретных таблиц. Так же служу за количеством подключений через плагин munin. Статистика такова, что при среднем количестве открытых соединений 12 имею 9500 открытых файлов конкретной (секционированной на 100 субтаблиц) таблицы. Т.е. таблица открыта не менее 95 раз, что значительно больше количества подключений. munin показал пик в 41 подключение, что тоже меньше. Число открытых файлов растет, причём ступенчато (наблюдаю через самописный плагин для munin). В чем может быть причина? Как настроить mysql, что бы он не открывал лишний раз таблицы или закрывал их? Быстрый гугл результата не дал (может запрос не так составил).
Спасибо за ссылку. Из статьи я понял, что mysql неэффективно работает с секциями, что на каждый запрос открываются все секции, независимо, нужны они в запросе или нет. Но не понял, через конекты запросы идут синхронно, т.е. при 12 конектах нужно открыть 12 раз одну таблицу (1200 файлов), но открыто 9500, либо на запрос открываются по несколько раз таблицы, либо mysql не закрывает файлы. Но видимо придется увеличивать лимиты. В статье указано максимальное число файлов * 2.
Alzasr: скорее всего, он их не сразу закрывает, т.к. "пулит" коннекты, я точно не знаю нужно код mysql рыть, давно с mysql не "общался". Вообще там по коду у них видно что они что-то да переписали ,месяца 3 назад, (попробуйте на последнем), а так бардака навалом.