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

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

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

Самые распространенные ошибки и основные задачи:

1. Дешевое оборудование. Владелец сайта не имеет возможность ознакомится с информацией какое оборудование установлено на сервере (кроме выделенных серверов), на сколько загружен сервер, можно ли его оптимизировать.
Как решить? Тут все просто – не покупать дешевый хостинг. У вас же не блог и сайты со ссылками на смешных животных. Если вы видите предложение на 5 $ вы должны понимать, что чудес не бывает и услуги будут предоставляться согласно стоимости пакета. Любой бизнес требует инвестиций. Хостинг-сервис может урезать ресурсы или нагружает сервер по максимуму для полного спектра услуг. Совет очень простой – узнайте у провайдера что за оборудование используется, какие процессоры и жесткие диски установлены в системе.

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

- Дисковая система. Забудьте про HDD, они годятся только под статику и картинки. Вы выбираете между SSD и SSD NVME, и тут выбор в пользу последних. Если кратко то прирост скорости такой же как и после перехода с HDD.

- Старые сервера. Топовые серверное железо очень чувствительно реагирует на внедрения новых технологий. Не зря серверные 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. Старое программное обеспечение. Одним из основных залогов успешной работы системы — обновление актуальных версий как самого движка так и всего сопутствующего программного обеспечения. Не редки случаи когда клиенты еще используют 5 версию PHP. Кроме показателей производительности это так же вопрос безопасности, который не менее важен. Контролируйте ПО, обновляйте все критические уязвимости.

4. Корректная настройка ПО. Не буду раскрывать все нюансы оптимизации так как кроме того что это наш хлеб, к сожалению не существует 100% инструкции по которой можно сделать идеальную настройку. Мы постоянно улучшаем и стараемся автоматизировать этот процесс, но без тонкой ручной настройки сервера, к сожалению не обойтись. Из того что могу открыть — обратите внимание на технологии которые ускоряют процессы которые влияют на скорость соединений с базой и на сам тюнинг базы. У себя мы отказались от Apache и полностью перешли на Nginx и PHP-FPM. Обратите внимание на то что CS-Cart делает много запросов к базе, потому варианты с сетевой базой данных на отдельном сервере не самое оптимальное решение. В любом случае если у вас нету опыта администрирования, самому ковырять дебри не стоит, нюансов действительно много.

5. 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