Задавайте вопросы, мы ответим
Вы не зашли.
Возникла проблема, хочу испросить совета. Ситуация такова, что при старте MySQL потребляет вполне нормальное количество оперативки. Постепенно, но не очень быстро, потребление памяти растёт. После примерно 2-х или 3-х месяцев работы (в зависимости от нагрузки на объект) объём затрагиваемой памяти достигает гигабайта. Речь идёт о цифре, которая в столбце RES. Ниже пример консоли с результатами команды top.
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
29240 mysql 18 0 1290m 116m 4092 S 1 5.8 0:01.07 mysqld
29260 root 15 0 2188 1016 800 R 0 0.0 0:00.03 top
После этого, сумма VIRT и RES превышает физический объём оперативки и начинаются тормоза. Намного медленнее, реально в десятки раз, идут выборки. По поводу превышения физического объёма - это предположение, возможно причина в другом, но факт остаётся фактом - после того как майка съедает много памяти, она начинает жутко тормозить.
Собственно вопрос, который меня волнует - есть ли возможность остановить этот рост? Может быть у меня криво написаны процедуры или запросы? Может быть надо периодически что-то командовать майке? А может просто немного поиграть настройками? В общем, хочется избавиться от необходимости перезапуска службы.
Неактивен
Сам по себе MySQL, вроде бы, не течет. Можно покрутить параметры буферов вниз.
Например, innodb_buffer_pool_size выделяется не сразу, а заполняется постепенно.
Возможно, стоит поставить параметр memlock — так MySQL никогда не попадет в swap.
Неактивен
Ну ... "вроде не течёт" в моём случае превращается в "точно течёт" . Это не единичный случай, это стабильное поведение на нескольких объектах в течение уже примерно года. innodb_buffer_pool_size выделяется сразу, мы обсуждали это тут несколько месяцев назад, там он выставлен в гиг и сразу же выставляет большую цифру виртуальной памяти. По приведённому выше куску консоли, вы можете увидеть что майка запущена буквально только что и сразу же у неё выделено соответствующее количество виртуалки.
Как бы то ни было, с мемлоком попробую.
Да, и не присутствует ли у майки какая-нибудь настройка, позволяющая ограничить потребление ресурсов? Например, как у MSSQL сервера, когда там можно поставить подобное ограничение на потребление оперативки, которое даже положительно влияет на производительность, потому что сервер как-то где-то более оптимизировано распределяет и очищает свою память.
Неактивен
Ммм.... возможно, какие-то еще буферы сразу не выделяются. Факт в том, что сервер растет в памяти
в процессе работы, приближаясь к какому-то максимальному значению.
Неактивен