Перейти к содержанию
alinalessioYandex

Повышенная нагрузка на сервер. Как лечить?

Рекомендуемые сообщения

Привет всем.
С недавнего времени сайт заблокировал хостинг (Хостинг центр - hc.ru), за повышенную нагрузку на сервер. Переехал на хостинг timeweb и взял тариф побольше - Миллениум. Там тоже с первого дня полетели письма о превышении нагрузки на ресурсы сервера, а именно нагрузка на MySQL и нагрузка на процессор. 
 
Сразу скажу, что точно такой же сайт, только под другим шаблоном благополучно работает на хостинге 1GB.ru. У них одинаковое количество продуктов и сами продукты одни и те же. Разница только в шаблоне.
 
 
1. Сначала я подумал, что на сайте вредоносный код и чтобы его устранить удалил всю файловую систему и установил чистый движок. Потом импортировал базу данных и залил картинки.
 
 
Нагрузка на сервер не изменилась. Все тоже самое.
 
2. Потом подумал, что может в базе данных косяк. На "чистую" базу данных, которая создается при установке OpenCart вставлял таблицы с продуктами, категории и прочее, что нужно на сайте.
 
Нагрузка та же.
 
3. Скачал работающий сайт, который на 1GB.ru и который абсолютно идентичен по категориям и товарам. Даже оставил тот же шаблон, только перекрасил заголовки и другие детали привел в тот вид, который должен иметь этот сайт. Залил на timeweb и в тот же день заблокировали за превышение, так как предупреждали, а я якобы ничего не сделал. Перезалил на hc.ru и тут за повышенную нагрузку на MySQL заблокировали, причем в тот же день.
 
 
ВОПРОСЫ:
1. Почему возникла эта проблема с MySQL? Ведь раньше ее не было, сайту около двух лет и все было в порядке.
 
2. Если проблема в файлах или в базе, то почему замена и того и другого с работающего сайта не решило проблему?
 
3. Как в конце концов устранить проблему?
 
Вот что прислали с хостинга, когда заблокировали в последний раз. Может это прояснит ситуацию? (извиняюсь, но не нашел Спойлер чтобы спрятать длинный код). Если код скопировать в Notepad++ то там не такая каша, а перенос строки и получается что одна и та же строчка повторяется, которая заканчивается разными цифрами.

 



18541599 burvoda7_radar fe115.hc.ru:21481 wwwburvoda72ru_radar Query 2 Sending data SELECT COUNT(DISTINCT p.product_id) AS total FROM product p LEFT JOIN product_description pd ON (p.product_id = pd.product_id) LEFT JOIN product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN product_to_category p2c ON (p.product_id = p2c.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND (p2c.category_id = '81')
18541745 burvoda7_radar fe115.hc.ru:22042 wwwburvoda72ru_radar Query 2 Sending data SELECT COUNT(DISTINCT p.product_id) AS total FROM product p LEFT JOIN product_description pd ON (p.product_id = pd.product_id) LEFT JOIN product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN product_to_category p2c ON (p.product_id = p2c.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND (p2c.category_id = '80')
18541766 burvoda7_radar fe115.hc.ru:22137 wwwburvoda72ru_radar Query 1 Sending data SELECT COUNT(DISTINCT p.product_id) AS total FROM product p LEFT JOIN product_description pd ON (p.product_id = pd.product_id) LEFT JOIN product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN product_to_category p2c ON (p.product_id = p2c.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND (p2c.category_id = '123')
18541793 burvoda7_radar fe115.hc.ru:22286 wwwburvoda72ru_radar Query 2 Sending data SELECT COUNT(DISTINCT p.product_id) AS total FROM product p LEFT JOIN product_description pd ON (p.product_id = pd.product_id) LEFT JOIN product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN product_to_category p2c ON (p.product_id = p2c.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND (p2c.category_id = '91')
18541839 burvoda7_radar fe115.hc.ru:22511 wwwburvoda72ru_radar Query 1 Sending data SELECT COUNT(DISTINCT p.product_id) AS total FROM product p LEFT JOIN product_description pd ON (p.product_id = pd.product_id) LEFT JOIN product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN product_to_category p2c ON (p.product_id = p2c.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND (p2c.category_id = '106')
18541841 burvoda7_radar fe115.hc.ru:22521 wwwburvoda72ru_radar Query 1 Sending data SELECT COUNT(DISTINCT p.product_id) AS total FROM product p LEFT JOIN product_description pd ON (p.product_id = pd.product_id) LEFT JOIN product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN product_to_category p2c ON (p.product_id = p2c.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND (p2c.category_id = '70')
18542265 burvoda7_radar fe115.hc.ru:24420 wwwburvoda72ru_radar Query 0 Sending data SELECT COUNT(DISTINCT p.product_id) AS total FROM product p LEFT JOIN product_description pd ON (p.product_id = pd.product_id) LEFT JOIN product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN product_to_category p2c ON (p.product_id = p2c.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND (p2c.category_id = '145')
18542275 burvoda7_radar fe115.hc.ru:24445 wwwburvoda72ru_radar Query 1 Sending data SELECT COUNT(DISTINCT p.product_id) AS total FROM product p LEFT JOIN product_description pd ON (p.product_id = pd.product_id) LEFT JOIN product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN product_to_category p2c ON (p.product_id = p2c.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND (p2c.category_id = '85')
18542316 burvoda7_radar fe115.hc.ru:24596 wwwburvoda72ru_radar Query 1 Sending data SELECT COUNT(DISTINCT p.product_id) AS total FROM product p LEFT JOIN product_description pd ON (p.product_id = pd.product_id) LEFT JOIN product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN product_to_category p2c ON (p.product_id = p2c.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND (p2c.category_id = '94')
18542429 burvoda7_radar fe115.hc.ru:25175 wwwburvoda72ru_radar Query 0 Sending data SELECT COUNT(DISTINCT p.product_id) AS total FROM product p LEFT JOIN product_description pd ON (p.product_id = pd.product_id) LEFT JOIN product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN product_to_category p2c ON (p.product_id = p2c.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND (p2c.category_id = '64')
18542498 burvoda7_radar fe115.hc.ru:25671 wwwburvoda72ru_radar Query 0 Sending data SELECT COUNT(DISTINCT p.product_id) AS total FROM product p LEFT JOIN product_description pd ON (p.product_id = pd.product_id) LEFT JOIN product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN product_to_category p2c ON (p.product_id = p2c.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND (p2c.category_id = '116')
18542526 burvoda7_radar fe115.hc.ru:25877 wwwburvoda72ru_radar Query 1 Sending data SELECT COUNT(DISTINCT p.product_id) AS total FROM product p LEFT JOIN product_description pd ON (p.product_id = pd.product_id) LEFT JOIN product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN product_to_category p2c ON (p.product_id = p2c.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND (p2c.category_id = '135')

 
Платформа: Ostore 1.5.1.3
Товаров: 2419 шт.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. У вас разные хостинги, значит могут быть разные пороги срабатывания предупреждений о нагрузке

2. Количество посетителей на обоих сайтах одинаковое?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. У вас разные хостинги, значит могут быть разные пороги срабатывания предупреждений о нагрузке

2. Количество посетителей на обоих сайтах одинаковое?

1. Пороги разные, но на 1GB у меня обычный не дорогой тариф, который позволяет только один сайт с одной базой. А те хостинги, на которые пытался разместить проблемный сайт стоят дороже и ресурсов больше предоставляют. Похоже там экстремально превышает.

 

2. Третье что я сделал, это взял базу работающего сайта. Т.е. там покупатели, пользователи, категории, товары и прочее все идентично.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кто-то может разъяснить на что намекает этот лог ошибок, который мне прислал хостинг?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

попробуйте отключить счетчик товаров в хедере. Вроде в 1,5,1,3 - этой настройки в админке еще нет, придется подправить файлы http://forum.opencart.com/viewtopic.php?t=33929#p166221

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Переезжайте на domenam.ru - в 10 раз больше товаров, чем у вас, 500-600 хостов/сутки, и пока (тьфу-тьфу-тьфу) никаких жалоб и тормозов  :-)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

попробуйте отключить счетчик товаров в хедере. Вроде в 1,5,1,3 - этой настройки в админке еще нет, придется подправить файлы http://forum.opencart.com/viewtopic.php?t=33929#p166221

В админку не пробиться. Сайт заблокирован. Сейчас попробую на локалке и залью в хост.

 

Есть еще предложения?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Переезжайте на domenam.ru - в 10 раз больше товаров, чем у вас, 500-600 хитов/сутки, и пока (тьфу-тьфу-тьфу) никаких жалоб и тормозов  :-)

Я попробую, если ничего больше не поможет, но я подозреваю, что с базой и правда что-то не то. Хочу сначала попробовать разобраться что означает этот лог ошибок и попробовать устранить проблему. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

попробуйте отключить счетчик товаров в хедере. Вроде в 1,5,1,3 - этой настройки в админке еще нет, придется подправить файлы http://forum.opencart.com/viewtopic.php?t=33929#p166221

Отключил счетчик в модуле категорий. Ничего не вышло. Хостинг снова ругается, что запросов больше чем положено по тарифу.

 

Вот что пишет хостинг hc.ru по поводу перегрузки на базу данных:

 

Запросы к БД

Медленные запросы к базам данных за сутки (кол-во запросов * время их выполнения)

1244320 из 50000 

 

Т.е. тут превышение в разы! Откуда взялось??? Как исправить? Кто-нибудь может расшифровать лог ошибок, который в первом сообщении этой ветки?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. Записываете лог медленных запросов (установите модуль от freelancer)

2. Смотрите, какие запросы там присутствуют.

3. Ищете, где такие запросы присутствуют в коде магазина.

4. Оптимизируете запросы.

 

В логе в первом сообщении содержатся запросы, которые подсчитывают кол-во товаров по категориям. В OpenCart до 1.5.5 их много в меню.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Счетчик и в категории и в меню отрубили?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В меню это где? В модуле категорий я отрубил, а в меню нет. Меню, имеется ввиду которое главное? Горизонтальное меню вверху? Но там нет счетчика. Во всяком случае количество товаров не показывает. Покажите пожалуйста как в меню убрать счетчики.

 

------------------------------------------------------------------------------

Спустя несколько минут.

 

Прошу прощения. Тут http://forum.opencart.com/viewtopic.php?t=33929#p166221 показали как в header.php убрать счетчики. Сначала не заметил. Теперь убрал счетчики и с header.php т.е. из верхнего горизонтального меню, как я понимаю. Теперь понаблюдаю что будет дальше.

 

Спасибо.

 

О результатах обязательно отпишусь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вчера я удалил счетчики с header. Еще не прошло полных суток. Результаты нагрузки ужасают:

 

 

Запросы к БД
Медленные запросы к базам данных за сутки (кол-во запросов * время их выполнения)
6331060 из 50000

 

Т.е. еще больше чем было вчера. Причем во много раз.

 

Отличие сайтов работающего от проблемного в том, что на проблемном на главной странице есть верхнее, горизонтальное меню, модуль рекомендуемые (featured), модуль акции (special)

 

Поиском нашел, что product_total есть и в модуле акций (special), но там не так как в модуле категорий. Кто скажет это может вызывать такие нагрузки и как удалить product_total из модуля special.

 

Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

так в чем проблема отключить по очереди все модули и найти "слабое" звено?

PS Я думаю дело не в них, но мало ли, вдруг найдете причину, а в худшем случае исключите влияние модулей

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

так в чем проблема отключить по очереди все модули и найти "слабое" звено?

Попробую. Как-то сам до этого не додумался. )) 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вчера отключил модуль "специальные". Сегодня нагрузки шокируют.

 

Процессор
Использование процессора за последние 7 суток (мин)
524.36 из 500   Запросы к БД
Медленные запросы к базам данных за сутки (кол-во запросов * время их выполнения)
90766620 из 50000

 

Теперь уже почти 100 миллионов из 50 тысяч! Похоже снова отключат. Помогите пожалуйста. Уже не знаю что и думать.

 

Возможно ли такую ситуацию спровоцировать не внутри сайта, а извне? Т.е. если злоумышленник намерен довести сайт до отключения, то может ли он при помощи каких либо инструментов создавать запросы к БД? Даже не знаю что и думать. Буду рад любой помощи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Теоретически можно, но вы ведь видите медленные запросы, вот и посмотрите что там такое.

Как я бы действовал, если бы хотел вам повесить сайт - большинство используют стандартные генераторы sitemap, имеющие везде одинаковые адреса /index.php?route=feed/google_sitemap

Я бы запустил одновременно несколько таких генераций и легко бы все повесил, потому что это процессы очень прожорливые, особенно когда товаров не 100-200, а больше 1000

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Статистика запросов: со времени запуска, на сервер было отослано запросов - 2,557,692,410.

Эм.. так же ужаснулся своей статистике)))) это на тестовом сайте за 2 недели без посетителей. Бред? )))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Теоретически можно, но вы ведь видите медленные запросы, вот и посмотрите что там такое.

Как я бы действовал, если бы хотел вам повесить сайт - большинство используют стандартные генераторы sitemap, имеющие везде одинаковые адреса /index.php?route=feed/google_sitemap

Я бы запустил одновременно несколько таких генераций и легко бы все повесил, потому что это процессы очень прожорливые, особенно когда товаров не 100-200, а больше 1000

1. Запросил у хостера  лог медленных запросов. Когда пришлет, посмотрю на какие запросы еще обратить внимание.

 

2. Отключил дополнения/каналы продвижения/Google Sitemap . Т.е. сейчас карта сайта у меня не доступна? Отключив Google Sitemap я обезопасил себя от сценария, который вы описали или нужны еще какие-то манипуляции, чтобы исключить возможность использования злоумышленниками сценария, который вы описали?

 

3. Может есть какой-то способ сразу вычислить, это атака извне или внутри сайта? На данном этапе, я конечно использую любую инфу, которую получаю в этой ветке, но может есть способ не методом исключения выяснять, а последовательно выявить конкретную причину и решать вопрос?

 

Нагрузки за 22.04.2013

 

Процессор

Использование процессора за последние 7 суток (мин)

685.73 из 500

Запросы к БД

Медленные запросы к базам данных за сутки (кол-во запросов * время их выполнения)

10753420 из 50000

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть решение? Сайт хостер снова отключил. Я в отчаянии. Помогите вернуть сайт к жизни.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть решение? Сайт хостер снова отключил. Я в отчаянии. Помогите вернуть сайт к жизни.

Попробуй вот это. Разработка не моя, найдено здесь, на форуме.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Была подобная ситуация. Даже темку на форуме создавал. Хостер был тотже IHC))

 

Я так понял проблема не файлах магазина, т.е. не в запросах идущих с него. Отключение различных фишек реальных результатов не даст.

С помощью шаманства мне удалось решить её. Каким образом конкретно я сам не понял но мысли и действия примерно такие:

 

1.Там где то в базе что то слетает. Пробуйте восстановить\пересоздать всю базу или вычисляйте таблицы\запросы с каких идет проблема. 

2. Работайте со службой поддержки, возможно какой то запрос вызывает цикличность -  они помогут если не найти то хотя бы перезапустить зависший процесс.

3. Апгрейдте  движок. с 1.5.1.3  на 4.1- я так подозреваю что такая трабла имела места быть только в  1.5.1.3 т.к. ни до не после я таких проблем не встречал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за инструкции. С завтрашнего дня буду пробовать.

У меня сразу вопрос. Третий пункт я пытался сделать, но постоянно вылетали ошибки. Дайте пожалуйста ссылку на подробное описание, как правильно обновить движок.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

alinalessioYandex сказал(а) 13 Май 2013 - 21:13:

Дайте пожалуйста ссылку на подробное описание, как правильно обновить движок.

opencart-*.zip: upgrade.txt

ocstore-*.zip: UPGRADE.txt

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

можно адреса магазинов в ЛС ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.