Количество запросов к БД

12
Y1
На сайте с 13.09.2010
Offline
37
2657

Здравствуйте, уважаемые форумчане.

Хочу разобраться с оптимизацией сайта и сейчас дошёл до БД. Гугл сильно ругается на то, что время ответа сервера велико. У меня вордпресс. Чтобы узнать количество запросов и время ответа, добавил в header код:

<?php echo get_num_queries(); ?> queries in <?php timer_stop(1); ?> seconds.

Сразу скажу, что в интернете не удалось найти нужной мне информации, поэтому пришел сюда. А интересует следующие моменты:

1. Обратил внимание, что запросов не так уж и мало - 12-20. Насколько я понял из того, что удалось добыть, это многовато. Так ли это на самом деле, если сайт не использует ни одного плагина, стоит одна асинхронная ссылка на jquery и 2 ссылки на стили?

2. Также, при загрузке одной и той же страницы отображается прыгающее количество запросов. Т.е. сейчас 12, после перезагрузки стало 19. Когда 19 - сразу время увеличивается раз в 6. Это нормально?

3. Как чайнику узнать, какие вообще запросы генерируются, чтобы найти слабое место? Лог медленных запросов чистый.

Прошу помощи)

totamon
На сайте с 12.05.2007
Offline
437
#1
yakor1988:
добавил в header код:

не знаю как в ВП, но обычно вывод в конец страницы вставляют..

yakor1988:
не так уж и мало - 12-20.

120-200 для ВП не так уж мало...

yakor1988:
сразу время увеличивается раз в 6.

в абсолютных цифрах сколько это время? в 6 раз от 0,001с и от 1с это две большие разницы...

Домены и хостинг https://8fn.ru/regru | Дедик от 3000р https://8fn.ru/73 | VPS в Москве https://8fn.ru/72 | Лучшие ВПС, ТП огонь, все страны! https://8fn.ru/inferno | ХОСТИНГ №1 РОССИИ https://8fn.ru/beget
K
На сайте с 03.06.2015
Offline
45
#2

Запросы к бд это не запросы к серверу. БД на сервере, там все локально. Конечно многое зависит от производительности компа где бд дислоцируется и от сложности запросов и от правильности организации хранения данных в бд и от размеров самой бд. Скажем сложный, то есть на несколько таблиц запрос с генерацией временной таблицы и выборкой из нее без индекса из базы в сотню тыщ записей может замедлить, да.

MYSQL PHP JS HTML CSS SEO TXT США СССР
Y1
На сайте с 13.09.2010
Offline
37
#3
не знаю как в ВП, но обычно вывод в конец страницы вставляют..

Ага, не подумал, спасибо. Поставил в футере - запросов стало 47. Среднее время 300-500 мс.

в абсолютных цифрах сколько это время? в 6 раз от 0,001с и от 1с это две большие разницы...

Скачки количества запросов возникает периодически, на момент написания этого ответа зафиксировать не смог. Но когда код стоял вверху, с 200-300 мс прыгало до 1.3 - 1.5 сек.

Вот и хочу узнать, нормально ли появление таких скачков? И соответственно, разобраться, все ли нормально с кодом/БД или нужно грешить на хостинг?

Так а где вообще эти запросы увидеть можно?

---------- Добавлено 28.07.2015 в 00:33 ----------

Вот оно. В типичных ситуациях совершается 47 запросов примерно за 300-500 мс. Иногда откуда-то прибавляет еще 5 запросов и получается что-то типа этого "52 за 1,459 секунды"😡

Y1
На сайте с 13.09.2010
Offline
37
#4
Назар Федорко:
А чему вы удивляетесь? У вас динамический сайт, отдельные запросы могут кешироваться на определенное время и обновляться по его истечению.

Я конечно не спец, но хочу разобраться, нормально это или нет. Дело в том, что скачки запросов возникают просто при периодической перезагрузке одной и той же страницы. Без обновления контента, стилей или других компонентов сайта. Сроки кеширования стоят большие, поэтому не думаю, что это связано с истечением сроков.

A
На сайте с 04.11.2007
Offline
134
#5

http://codex.wordpress.org/Editing_wp-config.php#Save_queries_for_analysis

Вместо print_r( $wpdb->queries ); можно в лог записать и посмотреть время выполнения запросов.

K5
На сайте с 21.07.2010
Offline
209
#6
52 за 1,459 секунды

для вордпресса это среднеминимальный показатель, обычно от 100 и выше.

аська 45два48499два записки на работе (http://memoryhigh.ru) помогу с сайтом, удалю вирусы, настрою впс -> отзывы ТУТ (/ru/forum/836248) и ТАМ (http://www.maultalk.com/topic140187.html) !!!всегда проверяйте данные людей, которые сами пишут вам в аську или скайп!!!
Y1
На сайте с 13.09.2010
Offline
37
#7
asteroid:
http://codex.wordpress.org/Editing_wp-config.php#Save_queries_for_analysis
Вместо print_r( $wpdb->queries ); можно в лог записать и посмотреть время выполнения запросов.

Спасибо! Нашёл по вашей ссылке, как отобразить все запросы и время каждого в футере сайта. Постараюсь разобраться

---------- Добавлено 28.07.2015 в 13:16 ----------

kgtu5:
для вордпресса это среднеминимальный показатель, обычно от 100 и выше.

А скачки количества запросов это нормально? Появление 5 дополнительных запросов не хило прибавляют времени. Постараюсь выяснить, какие это именно запросы

---------- Добавлено 28.07.2015 в 14:25 ----------

Нашёл те 5 дополнительных запросов, которые изредка появляются:

[3] => Array

(
[0] => SELECT option_value FROM wp_options WHERE option_name = '_transient_timeout_doing_cron' LIMIT 1
[1] => 0.00034189224243164
[2] => require('wp-blog-header.php'), require_once('wp-load.php'), require_once('wp-config.php'), require_once('wp-settings.php'), do_action('init'), call_user_func_array, wp_cron, spawn_cron, get_transient, get_option
)

[4] => Array
(
[0] => SELECT autoload FROM wp_options WHERE option_name = '_transient_doing_cron'
[1] => 0.00030303001403809
[2] => require('wp-blog-header.php'), require_once('wp-load.php'), require_once('wp-config.php'), require_once('wp-settings.php'), do_action('init'), call_user_func_array, wp_cron, spawn_cron, get_transient, delete_option
)

[5] => Array
(
[0] => SELECT autoload FROM wp_options WHERE option_name = '_transient_timeout_doing_cron'
[1] => 0.00030803680419922
[2] => require('wp-blog-header.php'), require_once('wp-load.php'), require_once('wp-config.php'), require_once('wp-settings.php'), do_action('init'), call_user_func_array, wp_cron, spawn_cron, get_transient, delete_option
)

[6] => Array
(
[0] => SELECT option_value FROM wp_options WHERE option_name = '_transient_doing_cron' LIMIT 1
[1] => 0.00029706954956055
[2] => require('wp-blog-header.php'), require_once('wp-load.php'), require_once('wp-config.php'), require_once('wp-settings.php'), do_action('init'), call_user_func_array, wp_cron, spawn_cron, set_transient, get_option
)

[7] => Array
(
[0] => INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`) VALUES ('_transient_doing_cron', '1438078636.2417569160461425781250', 'yes') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
[1] => 0.00052690505981445
[2] => require('wp-blog-header.php'), require_once('wp-load.php'), require_once('wp-config.php'), require_once('wp-settings.php'), do_action('init'), call_user_func_array, wp_cron, spawn_cron, set_transient, add_option
)

Везде присутствует этот крон - планировщик задач. Не уверен, что он мне вообще нужен: публикации не планирую, плагинов нет, нужно только обновление вордпресса. + где-то вычитал, что при росте посещаемости крон сильно грузит сервер, ибо запускается каждый раз, когда новый юзер загружает страницу. Кто-нибудь сталкивался с кроном этим? Стоит ли его отключить через define('DISABLE_WP_CRON', true);?

A
На сайте с 04.11.2007
Offline
134
#8

2-ой параметр массива - время запроса в сек. Эти 5 дополнительных выполняются за 1.5 мс.

Y1
На сайте с 13.09.2010
Offline
37
#9
asteroid:
2-ой параметр массива - время запроса в сек. Эти 5 дополнительных выполняются за 1.5 мс.

Я в общем-то догадался, что это время запроса. Только вот если сложить, то 1.5 секунды не выходит (хотя может я чего-то не понимаю?). Вообще, если сложить всё время 52 запросов, то 1.5 секунды не выйдет, как это пишет google или тот же

<?php echo get_num_queries(); ?> queries in <?php timer_stop(1); ?> seconds.

Короче я запутался :) явно скачки из-за крона... Может его попробовать просто выключить?

Y1
На сайте с 13.09.2010
Offline
37
#10
Назар Федорко:
Задержки могут быть на стороне HTTP-сервера. Нужно проверить сколько времени проходит от запроса клиента до начала работы скрипта (это будет задержкой pending) и от завершения работы скрипта до получения данных клиентом.

Опять же, я ещё слабо во всем этом ориентируюсь, но если я правильно вас понял, то измерить мне нужно время от завершения отправки запроса до начала загрузки контента. Т.е. измерить ожидание (в Google Chrome это время именуется Waiting (TTFB)). Вот скриншот http://joxi.ru/NXEA4buBVn9mbz. Если этот waiting велик - о чём это говорит?

12

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