[Помогите] Нагрузка на магазин

Тема в разделе "OpenCart", создана пользователем einshtein, 10 дек 2012.

  1. einshtein

    einshtein

    Регистрация:
    3 дек 2012
    Сообщения:
    71
    Симпатии:
    28
    Добрый день!
    Нужен совет, так как я уже сбился с ног в поиске решения, нужны свежие взгляды
    Использу ocstore 1.5.1.3
    домен tmz.com.ua
    В магазине несколько тысяч товаров и пару сотен категорий.
    Посещаемость 1000-2000 в день
    Использую модуль кэширования, сайт находится на виртуальном хостинге, имеет множество личных доработок и правок, кучу модулей и т.д И при всем при этом очень тормозит. Изза этого мы теряем треть клиентов.
    В свое время мне удалось оптимизировать сайт и снизить скорость загрузки с 12секунд до 1,5с. Сейчас же средняя скорость загрузки страницы 10-15 секунд. Когда чищу кэш - вообще до минуты грузит.
    Основной корень проблемы считаю - категории. Так как недавно наш сайт хакнули хаккеры и удалили все категории, оставив при этом все товары на месте. Так вот в тот день пока категории ещё не востановил - сайт летал как бешаный.
    Сразу хочу заметить что запросы в контроллере на количество товаров в категориях я закоментировал. Индексы прописал, сжатие в админке стоит на 0

    Что можна ещё придумать ребят? Ктонить сталкивался с этим? Начинаю подумывать о VPS но боюсь что это не решит проблему
     
  2. Niantic

    Niantic

    Регистрация:
    29 ноя 2012
    Сообщения:
    18
    Симпатии:
    15
    Была схожая ситуация, но с самого начала перенесли сайт на VPS, а только потом начали оптимизировать код, после переноса производительность увеличилась где-то на 20-25%, при том что VPS весьма средний (20$ в месяц).
    Так что есть повод задуматься нужен ли такой прирост скорости.
     
    einshtein нравится это.
  3. einshtein

    einshtein

    Регистрация:
    3 дек 2012
    Сообщения:
    71
    Симпатии:
    28
    ну на счёт VPS я уже точно решил что буду переезжать. Но корень проблемы явно не тут. Так как на том же хосте где у меня сайт есть другие магазины с немалой базой и они летают.
     
  4. Lion18

    Lion18

    Регистрация:
    3 дек 2012
    Сообщения:
    253
    Симпатии:
    30
    einshtein
    Да, заметил месяц назад эту проблему. Нагрузка создается именно из-за меню категорий. Если его убрать все работает хорошо. Проблема в том что не написан у категорий кеш. Решение приходило 2:
    1) поставить статическое меню.
    2) Установить кеш запросов в бд.(Внимание, кеширует все на сайте.))))
     
    einshtein нравится это.
  5. einshtein

    einshtein

    Регистрация:
    3 дек 2012
    Сообщения:
    71
    Симпатии:
    28
    Драйвер БД Mysql с кэшированием запросов 1.0 я уже когдато ставил - лагать стало ещё больше. Сейчас ещё раз проверил, загрузка страницы - несколько минут
     
  6. Lion18

    Lion18

    Регистрация:
    3 дек 2012
    Сообщения:
    253
    Симпатии:
    30
    Незнаю, мне тогда помог, очень даже хорошо.Просто увеличил время жизни кеша хорошо. А тормазить он может только в момент открытия еще не кешированой страницы.

    В поисках подобного решения, если найдете что нибудь поделитесь. Если я найду выложу здесь.
     
  7. einshtein

    einshtein

    Регистрация:
    3 дек 2012
    Сообщения:
    71
    Симпатии:
    28
    акей, спасибо за подсказку, буду тестировать.
    Хотелось бы услышать ещё варианты. Нужно бы найти корень проблемы.
     
  8. Lion18

    Lion18

    Регистрация:
    3 дек 2012
    Сообщения:
    253
    Симпатии:
    30
    корень проблемы это модуль категории, без кеша. Найти бы человека который допишет кеш.
     
  9. einshtein

    einshtein

    Регистрация:
    3 дек 2012
    Сообщения:
    71
    Симпатии:
    28
    нашел тему в которой обсуждают данную проблему.



    Пишут что при отключенном ЧПУ количество запросов резко уменьшается. ЧПУ отключать я точно не буду так как сайт проиндексирован уже очень хорошо. Зато в этой теме дают ссылку на модуль который кэширует запросы категорий
     
  10. Lion18

    Lion18

    Регистрация:
    3 дек 2012
    Сообщения:
    253
    Симпатии:
    30
    Хм, модуль это хорошо.не видно картинок ни демо.
    Но про чпу, я это слышал но не вариант, все кто создают магазины требуют читабельные ссылки определенных уровней.
     
  11. etens1212

    etens1212

    Регистрация:
    1 май 2013
    Сообщения:
    320
    Симпатии:
    16
    я иногда даже ставлю модуль...например pav blog
    он вроде сильно на сервер давит...и очень часто ошибка 502...интересно узнать почему...а что б товаров ного было и не тормозил надо ставить модуль http://www.opencart.com/index.php?route=extension/extension/info&extension_id=6204
     
  12. cereberlum

    cereberlum

    Регистрация:
    26 май 2013
    Сообщения:
    740
    Симпатии:
    267
    А кто скажет как бороться с тормозами при загрузке страниц категорий с большим количеством товаров? У меня в модуле категорий и в меню подсчет товаров отключен в контроллерах, модель продукта оптимизирована. Так все нормально, но если в категории несколько тысяч товаров, то притормаживает, скорее всего дело в необходимости подсчета товаров для разбивки на страницы. Есть у кого-нибудь идеи как ускорить?
     
  13. etens1212

    etens1212

    Регистрация:
    1 май 2013
    Сообщения:
    320
    Симпатии:
    16
  14. cereberlum

    cereberlum

    Регистрация:
    26 май 2013
    Сообщения:
    740
    Симпатии:
    267
    Это немного не то, он по идее ускоряет отдачу контента, но на генерацию страницы не влияет. Имел ввиду оптимизацию на уровне генерации, т.к. на это в моем случае уходит много времени. Нужно что-то типа кэширования запроса (cервером MySql), может как-то оптимизировать модель категории.
     
  15. ramzes

    ramzes

    Регистрация:
    26 дек 2013
    Сообщения:
    7
    Симпатии:
    0
    файл удален, не перезальете? заранее спасибо
     
  16. cereberlum

    cereberlum

    Регистрация:
    26 май 2013
    Сообщения:
    740
    Симпатии:
    267
    Тут даже постарше версия будет , если товаров много, то вряд ли поможет, надо оптимизировать код. Если не много товаров, то поможет может, но может вызвать и ошибки. У меня вообще не пашет, надо копать xml-файл, видимо.
     
    ramzes нравится это.
  17. halfhope

    halfhope

    Регистрация:
    31 дек 2012
    Сообщения:
    285
    Симпатии:
    312
    Вот еще материал по запросам к бд в помощь.
    http://sourcedistillery.com/opencart_optimisation.html
    Если vqMod старый, советую обновить. Попробуйте добавить кэширование отдельных запросов. Точнее всего двух функций в модели продукта.
    PHP:
       public function getCategory($category_id) {
            
    $sql "SELECT DISTINCT * FROM " DB_PREFIX "category c LEFT JOIN " DB_PREFIX "category_description cd ON (c.category_id = cd.category_id) LEFT JOIN " DB_PREFIX "category_to_store c2s ON (c.category_id = c2s.category_id) WHERE c.category_id = '" . (int)$category_id "' AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND c2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND c.status = '1'";
            
    $sql_md md5($sql);
            
    $cached $this->cache->get('cat.'.$sql_md);
            if (
    $cached) {
                return 
    $cached;
            }else{
                
    $query $this->db->query($sql);
                
    $this->cache->set('cat.'.$sql_md$query->row);
            }
         
            return 
    $query->row;
        }
     
        public function 
    getCategories($parent_id 0) {
            
    $sql "SELECT * FROM " DB_PREFIX "category c LEFT JOIN " DB_PREFIX "category_description cd ON (c.category_id = cd.category_id) LEFT JOIN " DB_PREFIX "category_to_store c2s ON (c.category_id = c2s.category_id) WHERE c.parent_id = '" . (int)$parent_id "' AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND c2s.store_id = '" . (int)$this->config->get('config_store_id') . "'  AND c.status = '1' ORDER BY c.sort_order, LCASE(cd.name)";
            
    $sql_md md5($sql);
            
    $cached $this->cache->get('cats.'.$sql_md);
            if (
    $cached) {
                return 
    $cached;
            }else{
                
    $query $this->db->query($sql);
                
    $this->cache->set('cats.'.$sql_md$query->rows);
            }

            return 
    $query->rows;
        }
    # если магазин один, можно удалить из всех запросов во всех моделях условие store_id = 'x'
    # AND c2s.store_id = '" . (int)$this->config->get('config_store_id') . "'
    Ну, и другие функции в файле тоже можно так же обработать. С этим могу помочь. Модуль seo пока что не разбирал, сказать ничего не могу. По хорошему бы провести профилирование кода и разобраться что к чему.
     
    HPlus нравится это.