Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте. Имеется нагруженный блог на вордпрессе, посещалка от 2 до 5 тыс. человек одновременно.
Всё это дело крутится на двух серверах
Web:
CPU:2x Intel Xeon E5-2430
RAM: 32Gb RAM
HDD: 2x3000Gb SATA
и
MySQL:
CPU:2x Intel Xeon E5-2430
RAM: 24Gb RAM
HDD: 2x600Gb SAS
(на одном веб сервер, на другом Mysql) общаются эти сервера через локаль - 1 Гб/с
Всё прооптимизировано и работает отлично, если бы не одно но...
Время от времени, буквально на минуту - две резко возрастает загрузка процессора (сервер, там где mysql)- 100% все ядра (а их не мало)
Ну и как следствие - скрипты выполняются очень долго, более 30 секунд. Соответсвенно и сайт получается недоступен.
Происходит это без каких либо закономерностей на ровном месте, даже при минимальной посещалке.
В slow-log при этом вываливаются абсолютно все запросы, и выполняются они более 5 секунд...
Cмотрел чем в это время занимается процессор с помощью SHOW FULL PROCESSLIST; (результат прикрепил в файле)
Также прикрепил конфиг mysql (my.cnf). Больше на этом сервере ничего не установлено.
Отредактированно ZeT (14.01.2013 00:40:56)
Неактивен
Очень много запросов в состоянии "Copying to tmp table", при этом другие в состоянии "Locked". Нужно разобраться почему они выполняются долго и всегда ли или только в определенной ситуации. Для сокращения числа возможных блокировок можно подумать над переходом на Innodb, если это применимо.
Неактивен
rgbeast написал:
Очень много запросов в состоянии "Copying to tmp table",
Это плохо? Временные таблички у меня распологаются на tmpfs в оперативной памяти.
Как избежать попадания их в эти таблички?
rgbeast написал:
можно подумать над переходом на Innodb
InnoDB говорите? Думаете будет лучше? Да, это уменьшит кол-во блокировок, но ведь основную проблему это не исправит.
Нагрузка на процессор вовзрастает до максимум, отсюда и долгое выполнение запросов и уже и долгое выполнение скриптов.
Может быть где-то косяк в настройке? Версия сервера 5.1.
Допустим рассмотрим переход на иннодб, не подскажите оптимальные настройки для моего сервера? Буду благодарен.
Отредактированно ZeT (14.01.2013 02:26:38)
Неактивен
Плохо не создание временных таблиц, а то что много таких запросов являются медленными (выполняются много секунд), из-за чего другие запросы блокируются. Значит во временную таблицу копируется слишком много данных - нужно подумать как оптимизировать именно его. Для Innodb см параметры innodb_buffer_pool_size и innodb_flush_log_at_trx_commit, а также ботанический определитель проблем производительности MySQL http://sqlinfo.ru/a/i/rubtsov_mysqlbot.ppt
В первую очередь нужно разобраться с медленным запросом.
Неактивен
Медленные запросы как следствие этой нагрузки. Так их нет.
rgbeast написал:
нужно подумать как оптимизировать именно его.
не совсем понял, кого?
Неактивен
Запросы типа этого
Неактивен
> В присланном SHOW PROCESSLIST время выполнения у них указано несколько секунд, следовательно они являются медленными.
Я же говорю, медленные запросы идут как следствие нагрузки. До этого, таких не возникает.
Или же вы считаете, что нагрузка возрастает именно из за этого? из за медленных запросов? и это не следствие, а наоборот причина?
Также интересует, как и для MyISAM так и для InnoDB параметры thread_concrurency - что лучше тут ставить?
В интернете везде советуют разное, но как понял я этот параметр ставится равным кол-ву потоков процессора?
Отредактированно ZeT (14.01.2013 03:06:59)
Неактивен
Если запрос принципиально быстрый, то он будет выполняться несколько секунд только при перегруженности диска. Запрос не похож визуально на быстрый и, может быть, в обычной ситуации он исполняется 0.1 секунду, что тоже долго. Это надо исследовать и запрос, по возможности, оптимизировать. Может быть весь 99% ресурса процессора использовано запросами такого типа.
Поставьте thread_concrurency равным удвоенном числу ядер процессора. Этот параметр не так важен. См. ботанический определитель, там все разобрано.
Неактивен
Спасибо, будем разбиратся. Ну а пока, вопрос остаётся открытым, если у кого будут какие-либо соображения, буду рад выслушать. Спасибо.
Неактивен
Как и думали медленные запросы это не причина, а следствие нагрузки.
Начали искать эти запросы в коде движка и оптимизировать его... Избавились от парочки, стало полегче.
Также включили лог запросов, не использующих индексы и тут всплыли проблемы.
Отредактированно ZeT (22.01.2013 18:38:09)
Неактивен