Karamazoff
Новичок
- Регистрация
- 24 Ноя 2017
- Сообщения
- 4
- Реакции
- 0
- Баллы
- 1
Доброго времени суток. вчера мой сайт перестал работать. Я сразу же написал в поддержку хостинга. Вот их ответ.
Здравствуйте. Обратите внимание на раздел Статистика, там Вы можете видеть, что нагрузка на MySQL-сервер превышена более чем в три раза. Это вызвано тем, что скрипты Вашего сайта выполняют крайне долгие запросы к базе, в частности такой запрос:
SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM dle_post p LEFT JOIN dle_post_extras e ON (p.id=e.news_id) WHERE approve=1 ORDER BY news_read LIMIT 0,12;
В данном запросе сразу несколько проблем:
Ну и на почту еще вот что:
Превышение нагрузки
На вашем сайте было зафиксировано серьёзное превышение лимитов по нагрузке. График нагрузки на аккаунт вы можете наблюдать в панели управления вашего аккаунта, раздел "Статистика".
Для противодействия нагрузке мы немного изменили настройки веб-сервера таким образом, чтобы без поддержи Cookie (и Javascript) клиенты не могли заходить на сайт и генерировать нагрузку. Естественно, в исключения добавлены поисковые роботы Google, Yandex, SeoPult, Робокассы, а также некоторые другие.
 Также, результаты запросов кэшируются на пять минут, результат ошибки 404 - на одну минуту. Не кэшируются страницы с куки session и nocache, а также страницы с авторизацией средствами веб-сервера.
Пишу здесь, так как вообще не знаю как оптимизировать эти запросы. Для меня это "темный лес"
Надеюсь на помощь, конечно.
Заранее спасибо!!!
Здравствуйте. Обратите внимание на раздел Статистика, там Вы можете видеть, что нагрузка на MySQL-сервер превышена более чем в три раза. Это вызвано тем, что скрипты Вашего сайта выполняют крайне долгие запросы к базе, в частности такой запрос:
SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM dle_post p LEFT JOIN dle_post_extras e ON (p.id=e.news_id) WHERE approve=1 ORDER BY news_read LIMIT 0,12;
В данном запросе сразу несколько проблем:
- У Вас есть индекс по approve, однако абсолютно у всех записей значение этого поля равно 1, то есть этот индекс (как и where в запросе) нисколько не помогает.
- Вы используете ORDER BY в случае, когда при запросе не может применяться индекс: поле в WHERE не соответствует полю, по которому производится сортировка. Данный случай и принципы оптимизации запросов order by описаны в том числе официальном руководстве по MySQL.
- Из-за предыдущих двух проблем БД сканирует 29329 строк для выполнения запроса, после чего сортирует их, создавая для этого временную таблицу, что тоже, очевидно, не повышает производительность.
Ну и на почту еще вот что:
Превышение нагрузки
На вашем сайте было зафиксировано серьёзное превышение лимитов по нагрузке. График нагрузки на аккаунт вы можете наблюдать в панели управления вашего аккаунта, раздел "Статистика".
Для противодействия нагрузке мы немного изменили настройки веб-сервера таким образом, чтобы без поддержи Cookie (и Javascript) клиенты не могли заходить на сайт и генерировать нагрузку. Естественно, в исключения добавлены поисковые роботы Google, Yandex, SeoPult, Робокассы, а также некоторые другие.
 Также, результаты запросов кэшируются на пять минут, результат ошибки 404 - на одну минуту. Не кэшируются страницы с куки session и nocache, а также страницы с авторизацией средствами веб-сервера.
Пишу здесь, так как вообще не знаю как оптимизировать эти запросы. Для меня это "темный лес"
Надеюсь на помощь, конечно.
Заранее спасибо!!!