Як зробити швидкий сайт на CS-Cart? Аналіз понад 300 мільйонів запитів.

Проект майже готовий для запуску, є всі підписані контракти, домовленості досягнуті і виникає потреба в швидкому запуску сайту на CS-Cart. Як зробити швидкий запуск сайту без втрат часу і фінансів? Аналіз понад 300 мільйонів запитів.

Власники проектів, які переїжджають до нас розповідають нам про низьку швидкість на попередніх хостингах, вони не можуть зрозуміти з чим це було пов'язано, скільки сил і часу пішло на пошук причини. Насправді все дуже просто, попередні хостинги не розраховані на ресурси споживання CMS, але ж більшість e-commerce рішень вимагає багато ресурсів і при переїзді на новий хостинг з самого початку вдається налаштувати платформу, так що проект починає працювати, як очікувалося. Причина зрозуміла і ясна, клієнт задоволений і все працює майже ідеально. Але що робити якщо навантаження на сервер велике, трафіку мало і сайт висне без очевидних на це причин? Команда Zahid-Host стикалася з аналогічними труднощами роботи сервісу і ми готові поділиться з вами рішеннями, щоб краще зрозуміти як правильно "готувати" сервер під CS-Cart.

Найпоширеніші помилки та основні завдання:

1. Дешеве обладнання

Власник сайту не має можливості ознайомитися з інформацією яке обладнання встановлено на сервері (крім виділених серверів), на скільки завантажений сервер, чи можна його оптимізувати.

Як вирішити? Тут все просто - не купувати дешевий хостинг. У вас таки не блог і сайти з посиланнями на смішних тварин. Якщо ви бачите пропозицію на 5 $ ви повинні розуміти, що чудес не буває і послуги будуть надаватися відповідно до вартості пакета. Будь-який бізнес вимагає інвестицій. Хостинг-сервіс може урізати ресурси або навантажує сервер по максимуму для повного спектра послуг. Порада дуже проста - дізнайтеся у провайдера що за обладнання використовується, які процесори та жорсткі диски встановлені в системі.

На що краще звернути увагу?

  • Не варто гнатися на високою частотою процесора, краще більшу кількість ядер, це не Майнінг і навантаження в основному йде на очікування завершення інших процесів, а не на саму обробку.
  • Дискова система. Забудьте про HDD, вони годяться тільки під статику і картинки. Ви вибираєте між SSD і SSD NVME, і тут вибір на користь останніх. Якщо коротко то приріст швидкості такий же як і після переходу з HDD на SSD.
  • Старі сервера. Топове серверне залізо дуже чутливо реагує на впровадження нових технологій. Не дарма серверні CPU коштують тисячі доларів і системи регулярно оновлюють, саме тому 3-х річні сервери вважають вже старими. Часто хостери викуповують б.у. сервера з Європи, оскільки за характеристиками вони здавалося б не сильно поступаються, але в результаті ви отримуєте обмеження по ряду технологій і від цього страждає як клієнт, так і бізнес в цілому.

2. Аналіз трафіку

Важлива деталь, яку часто ігнорують. Досить поширена помилка переважної більшості наших користувачів. У кращому випадку клієнти знають кількість активних користувачів і це вже добре. Але в основному ніхто не аналізує кількість запитів які роблять пошукові системи, боти, 1С та інший софт який працює з вашим сайтом. Розгляньмо наступну картинку:

За останні 3 місяця оброблено 366,477,094 запитів

Код відповіді

Процент

Значення

200

69.80%

225,425,906

 403

15.31%

49,460,374

 301

4.16%

13,420,989

 404

3.00%

9,684,673

 302

2.95%

9,532,648

 

Що ми з цього можемо зрозуміти? Ми надаємо систему захисту від ботів, тому як ви бачите - 15% запитів отримують 403 відповідь (доступ заборонений). Тобто як мінімум 15% навантаження на сервер це банально флуд. Наступним пунктом будуть редіректи, які складають 7%, досить важлива частка. Це додаткове навантаження, оскільки за ними йдуть реальні відповіді, але навіть не дивлячись що контент і шаблони не залучені, важке ядро ​​CS-Cart все одно працює.

Добре, перегляньмо хто саме отримує 200 (коректну відповідь):

 Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)

21.08%

47,528,190

 

 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Win64; x64; Trident/7.0; .NET CLR 2.0.50727; SLCC2; .NET4.0C; .NET4.0E; .NET CLR 3.5.30729; .NET CLR 3.0.30729)

10.59%

23,882,699

 

 Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)

3.32%

7,493,795

 

 Mozilla/5.0 (compatible; YaDirectFetcher/1.0; +http://yandex.com/bots)

2.90%

6,530,753

 

Others

Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)

1.55%

3,504,912

 

Mozilla/5.0 (compatible; YandexImages/3.0; +http://yandex.com/bots)

1.48%

3,342,491

 

Mozilla/5.0 (compatible; MegaIndex.ru/2.0; +http://megaindex.com/crawler)

1.39%

3,131,246

 

Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)

1.37%

3,085,331

 

Mozilla/5.0 (iPhone; CPU iPhone OS 8_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Version/8.0 Mobile/12B411 Safari/600.1.4 (compatible; YandexMobileBot/3.0; +http://yandex.com/bots)

1.36%

3,066,813

 

eFind/Cthulhu 0.9

1.23%

2,782,635

 

Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2)

1.00%

2,256,824

 

1C+Enterprise/8.3

0.92%

2,075,824

 

Mozilla/5.0 (compatible; Linux x86_64; Mail.RU_Bot/2.0; +http://go.mail.ru/help/robots)

 

0.85%

1,914,382

 

І ось диво, виявляється що всі топи "рвуть" пошуковики. Дуже часто ми спостерігаємо ситуацію коли сайти "лежать" від активної роботи пошукових систем, особливо це актуально для великих каталогів. Власники не розумію чому маючи банально 1000 користувачів їх сайт постійно "тупить", і збільшення ресурсів особливо не вирішує проблему. Яндекс буде запитувати ресурси настільки часто на скільки він може, дозволено в роботі або ж поки не почне отримувати повідомлення про помилку і тоді заспокоюється, паралельно відправляючи репорт, що сайт не працює. Картину в основному рятує установка жорстких лімітів через установку Crawl-delay.

 

Висновок - для аналізу в першу чергу потрібна перевірена інформація про те, яке навантаження у вас на сайті, навчитеся дивитися логи сервера, аналізувати всі запити, а не тільки аналітичні зведення, або ж довірте цю справу фахівцям, але аудит варто проводити регулярно, навіть якщо все працює досить добре.

 

3. Старе програмне забезпечення 

Одним з основних аспектів успішної роботи системи є оновлення актуальних версій як самого ядра CMS так і всього супутнього програмного забезпечення. Не рідкісні випадки коли клієнти ще використовують 5 версію PHP. Крім показників продуктивності це питання безпеки, яке не менш важливе. Контролюйте ПО, оновлюйте всі критичні вразливості.

 

4. Коректне налаштування ПО

Не буду розкривати всі нюанси оптимізації, крім того що це "наш хліб", на жаль, не існує 100% інструкції по якій можна зробити ідеальне налаштування. Ми постійно покращуємо і намагаємося автоматизувати цей процес, але без тонкої ручної настройки сервера, на жаль, не обійтися. З того що можу відкрити - зверніть увагу на технології які прискорюють процеси та впливають на швидкість з'єднань з базою та удосконалення бази. У себе ми відмовилися від Apache і повністю перейшли на Nginx + PHP-FPM. Зверніть увагу на те що CS-Cart робить багато запитів до бази, тому варіанти з мережевою базою даних на окремому сервері не найкраще рішення. У будь-якому випадку, якщо у вас немає досвіду адміністрування, самому це чіпати не варто, нюансів дійсно багато.

  1. DEBUG MODE. CS-Cart має хороший режим, який може дати дуже детальну картину як працює ваш сайт і що з ним не так.

Як ви бачите, в правому блоці видно вікно "дебагера", який повідомляє всі подробиці про сайт. Для активації цього режиму, вам потрібно зайти в файл config.php і розкоментувати рядок

// define ( 'DEBUG_MODE', true);

тобто прибрати подвійні слеші, залишити тільки

define ( 'DEBUG_MODE', true);

і зберегти файл. Після цього в правому верхньому куті на сайті з'явиться "жучок", при натисканні на нього і відкриється детальна інформація.

6. Правильна структура

Важливий пункт з безліччю трикрапок на межі розуміння як працює CS-Cart. Постараюся донести думку максимально коротко: не варто "смітити" в базі даних, не створюйте велику кількість додаткових опцій, зосереджуйтесь на основному. Дуже часто користувачі роблять величезну кількість фільтрів, бо є така можливість, але крім складних вибірок до бази й сповільненого інтерфейсу користувач отримує полотно з непотрібних параметрів з яких реально використовуються тільки 3-4 пункти. Стислість і акуратність є ключем до швидкості та зручності.

7. Режим «я все вмію»

Особисто я, радий за людей які крім ведення бізнесу займаються вивченням продукту яким користуються, але часто вони роблять це методом "наукового тику" і після ряду змін доводять сайт до стану коли простіше "перезалити" інформацію на чисту систему, ніж намагатися виправити старе. Перед тим як робити правки, вивчайте офіційну документацію, вона не дуже велика. Останнім часом вона стала набагато якіснішою і найчастіші запитання все ж можна вирішити просто почитавши її. Консультуйтеся з фахівцями, іноді витрачений час на тех. підтримку заощадить десятки годин роботи по відновленню або виправленню, оскільки пошук несправності не завжди очевидний. Тому, по можливості, вивчайте документацію, вникайте в тонкощі роботи веб-серверів та експериментуйте на окремій версії сайту (для розробки).

8. Режим мовчання

Часто клієнт не звертається до тех. підтримки в принципі, вважаючи що якість послуг не є на висоті, і найпростішим рішенням є зміна майданчика. Не дивлячись на те що ми постійно моніторимо роботу серверів клієнтів, проблеми не завжди очевидні й не завжди виявляються в високому навантаженні процесора або великий дискової активності. Пишіть листи, звертайтеся за допомогою, і тільки якщо з вами не йдуть на контакт і не вирішують вашу проблему думайте про перенесення. Основна мета, яку ми ставимо це усунення проблеми до того як клієнт може її ідентифікувати, деякі майданчики не дуже звертають на це увагу, але мають компетентних фахівців які можуть виправити помилки якщо їм повідомити про це. Тому контактуйте з вашим провайдером і частину проблем можна буде вирішити досить просто.

Надалі, більш детально постараюся відповісти на питання покращення роботи сайту та розглянути інструментарій яким можна зробити тонке налаштування системи. Дякую за увагу, сподіваюсь матеріал був вам корисний.

З повагою, Кобринюк Юрій, СТО Zahid-Host LLC

Статті про CS-Cart