WP. Тормоза админки, медленные запросы к базе

OL
На сайте с 26.09.2013
Offline
9
2724

Добрый день.

Внезапно стала тормозить админка при редактировании поста, просмотре таксономий и т.д.

С помощью вот этого

define('SAVEQUERIES', true);

print_r($wpdb->queries);

Получил вот это (фрагмент):

[50] => Array (
[0] => SELECT wp_users.ID FROM wp_users WHERE 1=1 ORDER BY user_login ASC LIMIT 2
[1] => 0.32008004188538
[2] => get_users, WP_User_Query->__construct, WP_User_Query->query )

[52] => Array (
[0] => SELECT ID FROM wp_posts WHERE post_type = 'attachment' AND post_mime_type LIKE 'video%' LIMIT 1
[1] => 8.2969665527344E-5
[2] => include('wp-admin/edit-form-advanced.php'), wp_enqueue_media )

[58] => Array (
[0] => SELECT post_name FROM wp_posts WHERE post_name = 'brynza-domashnyaya-iz-korovego-moloka' AND post_type = 'recepty' AND ID != 2373263 LIMIT 1
[1] => 0.011614084243774
[2] => include('wp-admin/edit-form-advanced.php'), get_sample_permalink_html, get_sample_permalink, wp_unique_post_slug )

[78] => Array (
[0] => SELECT t.term_id FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('metody-prigotovleniya') AND tr.object_id IN (2373263) ORDER BY t.name ASC
[1] => 9.0837478637695E-5
[2] => include('wp-admin/edit-form-advanced.php'), do_meta_boxes, call_user_func, post_categories_meta_box, wp_terms_checklist, wp_get_object_terms )

[79] => Array (
[0] => SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy IN ('metody-prigotovleniya') ORDER BY t.name ASC
[1] => 9.9897384643555E-5
[2] => include('wp-admin/edit-form-advanced.php'), do_meta_boxes, call_user_func, post_categories_meta_box, wp_terms_checklist, get_terms )

[81] => Array (
[0] => SELECT t.term_id FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('vremya-prigotovleniya') AND tr.object_id IN (2373263) ORDER BY t.name ASC
[1] => 9.7990036010742E-5
[2] => include('wp-admin/edit-form-advanced.php'), do_meta_boxes, call_user_func, post_categories_meta_box, wp_popular_terms_checklist, wp_get_object_terms )

[83] => Array (
[0] => SELECT t.term_id FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('vremya-prigotovleniya') AND tr.object_id IN (2373263) ORDER BY t.name ASC
[1] => 8.392333984375E-5
[2] => include('wp-admin/edit-form-advanced.php'), do_meta_boxes, call_user_func, post_categories_meta_box, wp_terms_checklist, wp_get_object_terms )

[84] => Array (
[0] => SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy IN ('vremya-prigotovleniya') ORDER BY t.name ASC
[1] => 8.392333984375E-5
[2] => include('wp-admin/edit-form-advanced.php'), do_meta_boxes, call_user_func, post_categories_meta_box, wp_terms_checklist, get_terms )

[85] => Array (
[0] => SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy IN ('vremya-prigotovleniya') ORDER BY t.name ASC
[1] => 9.0122222900391E-5
[2] => include('wp-admin/edit-form-advanced.php'), do_meta_boxes, call_user_func, post_categories_meta_box, wp_dropdown_categories, get_terms )

[89] => Array (
[0] => SELECT wp_users.ID,wp_users.user_login,wp_users.display_name FROM wp_users INNER JOIN wp_usermeta ON (wp_users.ID = wp_usermeta.user_id) WHERE 1=1 AND ( (wp_usermeta.meta_key = 'wp_user_level' AND CAST(wp_usermeta.meta_value AS CHAR) != '0') ) ORDER BY display_name ASC
[1] => 9.3936920166016E-5
[2] => include('wp-admin/edit-form-advanced.php'), do_meta_boxes, call_user_func, post_author_meta_box, wp_dropdown_users, get_users, WP_User_Query->__construct, WP_User_Query->query )

Как я понял, во втором элементе массива время выполнения запроса. Эти же запросы через phpMyAdmin выполняются за 0,00х секунд.

Подскажите, что не так и куда копать?

ДП
На сайте с 23.11.2009
Offline
203
#1

Даже если там время - то посмотрите в конец - в -5 степени, т.е. делите на 10000 его. Т.е. они быстро выполняются.

Для начала я бы на вкладочке network в инструментах разработчика в хроме том же посмотрел что у вас тормозит - серверная часть (страница долго генерируется) или клиентская - js долго выполняется? и от этого плясал.

Где-то слышал, что отключения истории поста может позитивно сказать на производительности, но так как ни эксперт в wp ни разу, то однозначно рекомендовать это не буду.

SeVlad
На сайте с 03.11.2008
Offline
1609
#2
oleg_lazarenko:
С помощью вот этого

А что толкнуло смотреть сразу в базу? Мб надо было сперва по пп4-6 поискать виновного? Я б так делал. А дальше - по результатам.

И да, кроме 50 всё остальное вроде как не медленное.

Почти офтоп:

Если кому интересно насчёт поиска узких мест в веб-приложениях - рекомендую посмотреть доклад Геннадия Ковшенина Профилирование кода в WordPress. Думаю, интересно будет не только для работающих с ВП, а всем веб-разработчикам. Там рассматриваются методы и ПО.

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий