Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


Recommended Posts

Привет всем.
С недавнего времени сайт заблокировал хостинг (Хостинг центр - 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. Пороги разные, но на 1GB у меня обычный не дорогой тариф, который позволяет только один сайт с одной базой. А те хостинги, на которые пытался разместить проблемный сайт стоят дороже и ресурсов больше предоставляют. Похоже там экстремально превышает.

 

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

Надіслати
Поділитися на інших сайтах


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

Надіслати
Поділитися на інших сайтах

попробуйте отключить счетчик товаров в хедере. Вроде в 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 

 

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

Надіслати
Поділитися на інших сайтах


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

 

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

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

 

Прошу прощения. Тут 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

Надіслати
Поділитися на інших сайтах


  • 3 weeks later...

Была подобная ситуация. Даже темку на форуме создавал. Хостер был тотже 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

Надіслати
Поділитися на інших сайтах


  • 8 months later...

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.