Mysql в TOPе [WordPress Issue]
Категория: / DEV Блог
/ Сервер (FreeBSD)
PID USERNAME PRI NICE SIZE RES STATE C TIME WCPU CPU COMMAND
56099 mysql 20 0 345M 45492K kserel 1 986:41 112.55% 112.55% mysqld
А как это? )
upd:
Дело было в старом плагине simple tags для wordpress.
Такой запрос выполнялся крайне медленно для нескольких тысяч записей
SELECT DISTINCT p.post_title, p.comment_count, p.post_date, p.ID, COUNT(tr.object_id) AS counter
FROM wp_posts AS p
INNER JOIN wp_term_relationships AS tr ON (p.ID = tr.object_id)
INNER JOIN wp_term_taxonomy AS tt ON (tr.term_taxonomy_id = tt.term_taxonomy_id)
WHERE tt.taxonomy = 'post_tag'
AND (tt.term_id IN ("54", "42", "30", "19"))
AND p.ID <> 4818
AND p.post_status = 'publish'
AND p.post_date < '2008-07-15 12:40:08'
AND p.post_type IN ('page', 'post')
GROUP BY tr.object_id
ORDER BY counter DESC, p.post_title DESC
LIMIT 0, 5
Анализируем.. вызов функции relatedPosts()
tt range PRIMARY,term_id_taxonomy term_id_taxonomy 106 4 Using where; Using temporary; Using filesort
tr ref PRIMARY,term_taxonomy_id term_taxonomy_id 8 tt.term_taxonomy_id 317
p eq_ref PRIMARY,type_status_date PRIMARY 8 tr.object_id 1 Using where
Обновление wp до 2.5 и simple tags до 1.5.7 решает проблему с нагрузкой.
Да, оказывается ежедневная проверка по крону не работала..
[root] myisamchk /usr/local/mysql/*/*.MYI
bash: /usr/local/bin/myisamchk: Argument list too long
Переписываем на
find /usr/local/mysql/ -type f -name '*.MYI' -exec myisamchk --force --fast {} \;