Уже несколько дней мучаюсь с настройкой mysql. Не могу добиться стабильной работы. Сервер 8 ядер и 32 Гб оперативной памяти.
Сначало база просто медленно обрабатывала запросы. Несколько дней выставлял параметры по рекомендации mysqltuner. Теперь же на любых настройках mysql большую часть времени mysql нагружает процессор на полную. LA в среднем держится на уровен 17 15 14. Опреативная память при этом занята не более чем на половину. Несколько простых сайтов на wordpress, но в большинстве шаблонов есть самописные sql запросы. Object cache и плагины кэширования почему-то работают не очень: либо не кэшируют вообще, либо кэш живет очень мало при любых настройках. Все таблицы InnoDB.
Частые ошибки из логов:
- upstream timed out (110: Connection timed out) while reading response header from upstream
- recv() failed (104: Connection reset by peer) while reading response header from upstream
- Lock wait timeout exceeded - выставил lock_wait_timeout = 20
- Waiting for table metadata lock - в my.cnf выставил autocommit = 0
Таймауты в nginx, php-fpm, mysql задраны до небес.
Были еще ошибки, но я их не записал.
В slow log куча запросов без индексов, но если выполнять их в консоли, то большинство из них выполняется менее чем за 0.01 сек.
Сейчас в show processlist стало появлятся много запросов со статусом "Copying to tmp table". Буду еще поднимать параметры кэша и буферов.
UPD: На данный момент перенес всю базу в оперативку, т.к. её объем позволяет. Работает заметно шустрее, но все равно есть несколько висящих запросов в статусе "Copying to tmp table", хотя я поднял параметры типа tmp_table_size, max_heap_table_size и некоторые дргуие буферы сортирововк и join'ов в 2 раза.
UPD: не помогло. Нагрузка поднялась, но меньше чем было. LA скачет от 3 до 14 по первому значению. Опять пошли 504 Gateway Time-out из-за базы.