Информация Ускорение и оптимизация престашоп

Напишу все свои наработки по оптимизации престы 1.6.*
Знакомый пожаловался, что магазин с детскими игрушками тормозит. Ситуация многим знакома: страницы загружаются по несколько секунд, рейтинг пейджспид 20-30 единиц. Купленная тема, 6-8к товаров.
Перепробовал много вариантов, кое-что уже отписывал в этом топике, с тех пор от некоторых вещей отказался, некоторые вещи внедрил.
Итак, на текущий момент имеем:
1) VPS на SSD, пустой Debian 8, тариф Aurum на ihor.ru.
Ресурсов взяли с запасом, т.к. помимо магаза есть и другие ресурсоемкие проекты. Стоимость месяца окупается менее, чем за сутки, так что не паримся. Если жалко денег - можно взять тариф и попроще (но если лишняя тысяча в месяц бьет по вашему карману - видимо, екомерс не для вас:)) Выбор операционки также некритичен, мне просто на дебиане привычнее.
2) Установлена панель VestaCP в конфигурации nginx+php-fpm. MySQL после установки заменен на MariaDB (для некоторых других разновидностей линукса мария ставится "из коробки"), php-fpm обновлен на php7.0-fpm, включен opcache, к nginx добавлен mod_pagespeed. Настройки opcache, php-fpm и MariaDB тупо загуглил, соотнеся рекомендованные в статьях с объемом базы данных и имеющимися ресурсами.
3) В админке престы, "расширенные настройки"->"производительность":
Компиляция шаблонов: Никогда не перекомпилировать файлы шаблона
Кэш: Да
Тип кеширования: Файловое кеширование
Очистка кэша: Очищать кеш при каждом изменении чего-либо
ККК: включены Умное кеширование CSS и JavaScript, сжатие встроенного в HTML JavaScript. Остальные опции из-за особенностей верстки шаблона (довольно кривой, надо сказать) и пейджспида (о нем позже) подглючивали, так что выключил. На других темах, возможно, имеет смысл их включить.
Кеширование в последнем пункте на данной странице выключено. Пробовал XCache, Memcached на разных настройках и существенного прироста производительности не получил.
4) Установил плагин CacheManager, везде поставил время кеширования 1440 минут (т.е. сутки).
5) Конфиг пейджспида в /etc/nginx/nginx.conf (главный конфиг инжина)

конфиг в /home/<юзер>/conf/web/nginx.conf (конфиг доменов в весте, для каждого из доменов)


Указанные выше настройки задают максимальный срок кеширования статики в браузерах, оптимизируют css и javascript на каждой странице, пережимают картинки в webp. Подробнее см. справку гугла по этим опциям, возможно, для вашего сайта придется поиграться с некоторыми значениями. Качество изображений 80% для webp практически не ухудшает их в сравнении с оригиналом. Также включил опцию ServeRewrittenWebpUrlsToAnyAgent (отдавать всем браузерам изображения в формате webp), т.к. подавляющее большинство современных браузеров поддерживает этот формат. Не нравится - выключите. Учтите, что все картинки сразу не перегенерируются, занимает примерно сутки.
Сжатие gzip в конфиге весты по умолчанию уже включено.
Гуглошрифты скачал на сайт и загружаю через localStorage браузера, в этой теме уже отписывался про этот фокус.
Также заменил слайдеры товаров "хиты продаж", "новинки", "похожие" и еще парочку из темы на нагугленные слайдеры с чистым css без яваскрипта. Откуда взял, увы, не помню, но по запросу "pure css slider" без проблем найдете по душе.
На страницах категорий и тегов по умолчанию включено 60 товаров (настоял клиент, вопреки моим увещеваниям). Страницы загружаются моментально даже с таким количеством.
В пейджспиде для главной и страниц категорий имеем 85/100 для мобильных, 92/100 для настольных пк. Баллы сняты за яметрику, гугл аналитикс и сервис обратного звонка и чат с клиентами; также минус за монструозные цсски и яваскрипты из темы. Как дойдут руки их перелопатить и выкинуть лишнее - полагаю, подтяну рейтинг до более солидных величин. Можно перекачивать скриптом и удаленные яваскрипты, чтобы грузились локально - но это уже пляски с бубном какие-то, да и обсуждалось в этой же теме не один раз.
После внедрения всех вышеуказанных мер посещаемость с поисковиков подросла до 500-600 чел в сутки (было 300-400), пропорционально возросло и число заказов. Почти все новые посетители с поисковиков по нч и немного сч, других мер по раскрутке пока не предпринималось.

P.S. Отдельно настраивал кеш fastcgi - все работало просто реактивно, но, увы, из-за него был косяк со стартом сессий на некоторых браузерах, отчего у некоторых юзеров пропадали товары из корзины. Пробовал разные варианты конфигов, но в итоге решил отказаться от этого вида кеша - в принципе, и без него работает достаточно шустро.

Делали настройку конфига и PageSpeed по вашенму примеру, все бы хорошо, но отвалились фотографии товаров именно в админке. Возможно вы сталкивались с похожей пробленмой и подскажете что может на них потенциально влиять?
 
Люди добры помогите пожалуйста.
Пытаюсь протестировать через Для просмотра ссылки Войди или Зарегистрируйсяскорость загрузки страниц, и получаю 503 ошибку.
Проковырял всё что можно.
Обратился в хостинг и они мне прислали такой ответ
503 - это код ответа сервера, который нами используется для обозначения превышения допустимой нагрузки. Все подобные случаи фиксируются в логах сервера, однако превышения допустимой нагрузки Вашим сайтом не зафиксировано.
Через браузер или мобильные устройства указанных ошибок не наблюдается.

Код 503 может быть использован разработчиком скриптов сайта для обозначения собственных ошибок.

В error_log сайта в указанный вами период времени наблюдались ошибки:

:/home/......./_logs/сайтнейм# grep 'Tue Feb 27 18'
сайтнейм.error_log

[Tue Feb 27 18:09:08.142812 2018] [:error] [pid 14141] [client
66.249.93.21:20180] PHP Fatal error: Uncaught --> Smarty: Missing template
name <-- \n thrown in
tools/smarty/sysplugins/smarty_internal_template.php
on line 678
[Tue Feb 27 18:09:08.907589 2018] [:error] [pid 14415] [client
66.249.93.21:20486] PHP Fatal error: Uncaught --> Smarty: Missing template
name <-- \n thrown in
/tools/smarty/sysplugins/smarty_internal_template.php
on line 678
[Tue Feb 27 18:09:10.617223 2018] [:error] [pid 14455] [client
66.249.93.19:20549] PHP Fatal error: Uncaught --> Smarty: Missing template
name <-- \n thrown in
/tools/smarty/sysplugins/smarty_internal_template.php
on line 678
[Tue Feb 27 18:10:08.021795 2018] [:error] [pid 13158] [client
46.229.168.77:18449] PHP Warning:
file_get_contents(Для просмотра ссылки Войди или Зарегистрируйся............................:( failed
to open stream: HTTP request failed! in
/modules/tmsocialfeeds/tmsocialfeeds.php on
line 683

Тогда же фиксировалась отдача Вашими скриптами кода 503 на запрос к сайту:

:/home/........../_logs/сайтнейм# grep ' 503 '
сайтнейм.access_log | wc -l
28
я в кодинге не силён. подскажите решение вопроса
 
Не могу толком с серверным кэшем разобраться.
До сих пор был активирован Memcached через PHP Memcashed. Ранее пробовал также APC.
Только что отключил его использование - поставил кнопку "Use cache" внизу странички "Performance" на "No" (красным цветом).
И магазин сразу же быстрей заработал - и бэкоффис и фронт оффис - страницы заметно быстрей грузиться стали. Прям летать всё стало.
Очень хочется понять что происходит. Кто может объяснить?
 
Последнее редактирование:
Не могу толком с серверным кэшем разобраться.
До сих пор был активирован Memcached через PHP Memcashed. Ранее пробовал также APC.
Только что отключил его использование - поставил кнопку "Use cache" внизу странички "Performance" на "No" (красным цветом).
И магазин сразу же быстрей заработал - и бэкоффис и фронт оффис - страницы заметно быстрей грузиться стали. Прям летать всё стало.
Очень хочется понять что происходит. Кто может объяснить?
не заморачивайтесь, вы всё правильно сделали.
в пхп начиная с версии 5.6 встроен свой кэш, поэтому использовать устаревшие мемкеши/апц - путь в никуда.
смарти кэширование хоть не через mysql ? если да - переключите на файловое, скорость ещё по идее увеличится.
 
не заморачивайтесь, вы всё правильно сделали.
в пхп начиная с версии 5.6 встроен свой кэш, поэтому использовать устаревшие мемкеши/апц - путь в никуда.
смарти кэширование хоть не через mysql ? если да - переключите на файловое, скорость ещё по идее увеличится.
Prestashop 1.7.2.4 подключен к PHP 7.0.25 в режиме FPM.

Вот данные:
Serverdaten Linux #132-Ubuntu SMP Tue Jan 9 19:52:39 UTC 2018 x86_64

Version der Server-Software Apache

PHP-Version 7.0.25-nmm1

Speichergrenze 512M

max_execution_time: 360

Upload (max. Dateigröße) 64M

MySQL-Version 5.7.20-nmm1-log

MySQL-Engine InnoDB

MySQL-Treiber DbPDO

А smarty cache как раз включил на MySQL.
Причина: у провайдера файлы хранятся на обычном жёстком диске, а MySQL работает на быстром SSD.
Я пробовал переключать смарти кэш на файловое хранение, но честно говоря, особой разницы в скорости не приметил
и поэтому оставил пока хранение в MySQL.

P.S. Кстати, есть возможность переключить домен с работы на PHP 7.0.25 на PHP 7.1.11 или PHP 7.2.1, также в режиме FPM. Но сомневаюсь - стоит ли? Опасаюсь, что возникнут проблемы с разными модулями, которые ещё не приспособлены к 7.1.11 и 7.2.1. Да и нет уверенности, что и сам престашоп 1.7.2.4 уже на 100% совместим с PHP 7.1 и PHP 7.2. Или у кого-то уже работает PS 1.7.2.4 c PHP 7.1 / 7.2?
 
Последнее редактирование:
В случае если у вас такой хостинг как вы описываете - наверное, mysql хранение действительно будет быстрее.
По поводу пхп7.1, 7.2 - пока не попробуете не узнаете. 7.1 вроде быстрее был чем 7.0 на сколько-то процентов.
Но у вас слабые места, это : апач, mysql, шаред хостинг на хдд.
Если есть хотя бы сотня посетителей в день и планируется рост - рекомендуется арендовать vps с ssd и настроить нормальный софт.
 
Но у вас слабые места, это : апач, mysql, шаред хостинг на хдд.
Если есть хотя бы сотня посетителей в день и планируется рост - рекомендуется арендовать vps с ssd и настроить нормальный софт.
Я, наверное, неточно описал ситуацию.
У меня не shared hosting, а так называемый Managed Server.
То есть, на нашем сервере других клиентов нет, но у меня нет полных root привилегий.
То есть, например, я не могу сам установить дополнительные PHP расширения или менять php.ini.
Но по моей просьбе провайдер установит нужные расширения, а большинство параметров сервера я могу регулировать через .htaccess.

Вот железная сторона сервера:
Intel® Xeon® E3-1246v3 : 4 ядра по 3,5GHz
16 GB RAM
1 TB HDD (RAID 1)
+ 250 GB SSD (RAID 1) fоr MySQL inkl.
SSH-Zugang (not root)
24 часа телефонная поддержка.

Это один из нескольких стандартных вариантов, которые по цене в разы различаются.

А что Вы имеете ввиду под "настроить нормальный софт"?
Вместо Apache поставить nginx?
Или что-то ещё?
 
Вместо Apache поставить nginx?
nginx + fpm уже будет большим плюсом, потом еще можно mysql заменить на mariadb.

если размер базы серьезный, то тюнинг настроек еще может производительности добавить неплохо
 
Я поставил PHP7 и магазины клиентов на престе летают, все версии, да и сайты остальные тоже полетели.
 
большинство параметров сервера я могу регулировать через .htaccess.
не параметров сервера, а настроек Апача.
Если у вас там много хитрых правил, то переход на nginx немного осложнится - нужно будет переписать правила.
Вот железная сторона сервера:
классный сервер. только я бы на вашем месте файлы магазина отдавал тоже с ссд, с таким-то размером диска, и поставил в престе файловое кэширование.
а хдд бы использовал для бэкапов и всего, что не нужно быстро грузить.
Вместо Apache поставить nginx?
Или что-то ещё?
не просто nginx, а желательно nginx последней стабильной версии с поддержкой хттп2 и несколькими дополнительными модулями, типа pagespeed и brotli.
вместо mysql - mariadb и немного её донастроить.
по поводу версии пхп - всё равно, лишь бы не 5.6:
PrestaShop-benchmarks.png

Для просмотра ссылки Войди или Зарегистрируйся
в комплексе все эти меры помогут добавить производительности под нагрузкой, при большом количестве одновременных посетителей.
 
Последнее редактирование:
Назад
Сверху