master32#: тестанул сайт, там на весь сайт задержка большая, а может такое быть, что по таймауту в 5 сек подтягивается какие-то данные с другого сайта?
По идее на некоторых страницах есть ифреймы Youtube, можно было бы на них подумать.. но страницы без них также тормозят..
master32#: тестанул сайт, там на весь сайт задержка большая, а может такое быть, что по таймауту в 5 сек подтягивается какие-то данные с другого сайта?
Вот наконец осилил программинг!! Не судите строго мои скиллы, я написал код в 2011 где-то.. нигде не работал программером, так немного для себя )
Вот сделал profiling, напр., по странице где задержка отображения 10 секунд.. прям застывает загрузка.. правее запроса время исполнения.
Никакого криминала вроде нет, так что за фигня может быть тогда?
SELECT * FROM place WHERE tansliterated LIKE 'sochi' AND active=1 0.00094158
SELECT name, name4, tansliterated FROM place WHERE placeID=625 0.00047766
SELECT menuTitle,alias from article WHERE placeID=625 AND active=1 AND typeID<>34 0.00042623
SELECT menuTitle,alias from article WHERE placeID=625 AND active=1 AND typeID=34 0.00045352
SELECT * FROM placeMonth WHERE placeID=625 AND monthID=7 AND active=1 0.00045359
WebStorm#: да, профилирование показывает запросы в рамках текущей сессии, грубо говоря на сайте сессия одна, а вы смотрите в другой, поэтому и нет никакой инфы, надо либо скопировать запросы с сайта и выполнить их вручную в рамках профилирования, либо прописать запросы на профилирование внутри файла сайта работы с базой и записать результат в файл, либо, чтобы узнать как выглядит запрос, если есть доступ к настройке mysql включить слоу лог и посмотреть запрос там: https://www.kobzarev.com/linux/mysql-slow-query-log/
Сделал на основе этого примера в php. Все работает, но показывает информацию о длительности запросов только из этой страницы.. локально.. все что параллельно происходит на реальных страницах не отображает. Получается я должен внедрить в каждую страницу интересующую этот код и лог записывать?
/ Поключаемся к базе данных $dbConn = new mysqli('localhost', 'user', 'password', 'dbname'); // Устанавливаем режим профайлинга $dbConn->query('set profiling=1'); // Выполняем наш запрос $dbConn->query('select * from goods'); $data_profile = $dbConn->query('show profiles'); // Получаем данные о профайлинге $row = $data_profile->fetch_array(); // Отменяем режим профайлинга $dbConn->query('set profiling=0');
// Выведем данные на экран echo '<pre>'; print_r($row); echo '</pre>';
// Получим время выполнения и строку sql-запроса $duration = $row['Duration']; $query = $row['Query'];
printf('Запрос: %s. Время выполнения - %s', $query, $duration);
Вот то что показало по выборке из самой большой таблицы, но тут я простой запрос сделал (выборка по ID). Надо поработать будет чтобы показало то что нужно..
Для начала, хорошо бы провести профайлинг. Так можно будет определиться, где возникают задержки и уже определившись - приступать к работе по оптимизации.
Зашел в phpmyadmin:
set profiling=1;
show profiles;
Выдал: "MySQL вернула пустой результат (т.е. ноль строк). (Запрос занял 0.0002 сек.)"
Перед этим сделал запрос к странице, была задержка отображения секунд 10.
да вот это надо проработать может тормозить весь сервер, поэтому при выборках из соседних таблиц тормоза база мизерная, такую можно в текстовом файле хранить и она не должна тормозить)
а можно как-то сохранить схему и показать кому нибудь? за оплату может.. возможно что посоветуют.. я боюсь что уже сделал все что мог )
а какой размер базы? может пора кластеризацию подключать? а так стоит смотреть в сторону Redis, например
Ну.. возможно по моим полулюбительским критериям огромная )) так она 2ГБ (дамп). А где хранится погода - там 40111809 записей и таблица 5ГБ если смотреть в phpmyadmin в Структуре.
Или это ни о чем при грамотных индексах и тп?
И еще вопрос, страницы тормозят не только там, где происходит выборка из большой таблицы, но и из других. Может ли одна большая таблица сказываться на работу с другими таблицами (если в это же время параллельно делаются запросы к большой таблице) ? то есть насколько все взаимосвязано..
Используйте метод fetch_assoc, чтобы не дублировать данные (даже если фактически дублируются только ссылки на эти данные).
"То что нужно" - это что? Выше у меня закралось подозрение, что у вашего сайта запросы к базе данных неправильно составлены.
выше запросы указал и время исполнения
тестанул сайт, там на весь сайт задержка большая, а может такое быть, что по таймауту в 5 сек подтягивается какие-то данные с другого сайта?
По идее на некоторых страницах есть ифреймы Youtube, можно было бы на них подумать.. но страницы без них также тормозят..
тестанул сайт, там на весь сайт задержка большая, а может такое быть, что по таймауту в 5 сек подтягивается какие-то данные с другого сайта?
Вот наконец осилил программинг!! Не судите строго мои скиллы, я написал код в 2011 где-то.. нигде не работал программером, так немного для себя )
Вот сделал profiling, напр., по странице где задержка отображения 10 секунд.. прям застывает загрузка.. правее запроса время исполнения.
Никакого криминала вроде нет, так что за фигня может быть тогда?
да, профилирование показывает запросы в рамках текущей сессии, грубо говоря на сайте сессия одна, а вы смотрите в другой, поэтому и нет никакой инфы, надо либо скопировать запросы с сайта и выполнить их вручную в рамках профилирования, либо прописать запросы на профилирование внутри файла сайта работы с базой и записать результат в файл, либо, чтобы узнать как выглядит запрос, если есть доступ к настройке mysql включить слоу лог и посмотреть запрос там: https://www.kobzarev.com/linux/mysql-slow-query-log/
Сделал на основе этого примера в php. Все работает, но показывает информацию о длительности запросов только из этой страницы.. локально.. все что параллельно происходит на реальных страницах не отображает. Получается я должен внедрить в каждую страницу интересующую этот код и лог записывать?
Вот то что показало по выборке из самой большой таблицы, но тут я простой запрос сделал (выборка по ID). Надо поработать будет чтобы показало то что нужно..
[0] => 1
[Query_ID] => 1
[1] => 0.00114473
[Duration] => 0.00114473
Для начала, хорошо бы провести профайлинг.
Так можно будет определиться, где возникают задержки и уже определившись - приступать к работе по оптимизации.
Зашел в phpmyadmin:
set profiling=1;
show profiles;
Выдал: " MySQL вернула пустой результат (т.е. ноль строк). (Запрос занял 0.0002 сек.)"
Перед этим сделал запрос к странице, была задержка отображения секунд 10.
Я что-то не так сделал?
да вот это надо проработать
может тормозить весь сервер, поэтому при выборках из соседних таблиц тормоза
база мизерная, такую можно в текстовом файле хранить и она не должна тормозить)
а можно как-то сохранить схему и показать кому нибудь? за оплату может.. возможно что посоветуют.. я боюсь что уже сделал все что мог )
а какой размер базы?
может пора кластеризацию подключать?
а так стоит смотреть в сторону Redis, например
Ну.. возможно по моим полулюбительским критериям огромная )) так она 2ГБ (дамп). А где хранится погода - там 40111809 записей и таблица 5ГБ если смотреть в phpmyadmin в Структуре.
Или это ни о чем при грамотных индексах и тп?
И еще вопрос, страницы тормозят не только там, где происходит выборка из большой таблицы, но и из других. Может ли одна большая таблица сказываться на работу с другими таблицами (если в это же время параллельно делаются запросы к большой таблице) ? то есть насколько все взаимосвязано..
Метрика бесплатно шлет смс, если сайт недоступен.
вроде перестали слать?
Вот статистика за 3 месяца, я так понял ютуб замелен 2 месяца, то есть можно просмотреть динамику.
ИЮЛЬ-СЕНТЯБРЬ: есть изменения, насколько это фатально? так то вроде небольшие..
А вот АПРЕЛЬ-ИЮНЬ:
Тоже отрицательная динамика (кроме время на сайте):