Производство фотообоев в Новосибирске. Интернет магазин фотообоев. Изготовление - один день! Каталог 10 000 изображений!
7 Октябрь 2010

Снижение нагрузки на сервер. Оптимизация VitrueMart.

posted in Полезности, Программирование |

В рамках цикла заметок по вычислению и снижению нагрузки на сервер было бы не правильно не опубликовать логическое завершение «разборок» с VirtueMart, как одним из виновников в жёстском ступоре сервера, выявленном по создаваемым нагрузкам на MySQL — подробнее в предыдущей заметке Вычисление нагрузки на сервер. Part 1 — MySQL Так же стоит заметить — торможение MySQL цепляет за собой и нагрузку на память в виде ожидающего данных веб-сервера (на данный момент у меня это сильно сжирающий память индеец).

Итак:

  • изначально о слишком большой нагрузке узнал в реальном режиме просматривая top
  • далее захотелось узнать кто же конретно грузит — с этой задачей справилась утилита mtop
  • конкретные «тормозные» SQL запрос смотрим в логах, предварительно включив нужную опцию

Виновник вычислен, скрипт известен — что же дальше ?

Ну а дальше самый важный шаг — оптитизация приложения.

Грамотно реализованное приложение будет работать быстрее аналогичного по задачам на обычном VDS против супер-навороченного выделенного сервера — это факт !

Ладно — хватит лирики .. .По нашей задаче — далее всеми мыслимыми и немыслимыми способами ищем программный код, генерирующий вычисленный запрос — гуглим, разбираемся в Joomla, VitueMart, ищем по «select distinct», включаем интуицию, метод «научного тыка» — в общем все эти «пляски с бубном» лично мне помогли вычислить файл — shop_browse_queries.php

Далее анализируем и оптимизируем сам запрос — вычисляем неиспользуемые и ненужные поля — убираем их, проверям заново (всё это можно делать отдельно от приложения — например, в чистом MySQL.

Далее дело за малым — правим наш shop_browse_queries.php в соответствие с нашим запросом.

Всё ! В результате проделанных махинаций запрос стал отрабатывать раз в 10 быстрее, в лог «тормозов» не попадает — сервер вздохнул свободно (по крайней мере падений пока не наблюдалось).

Кому интересно, вот подробности:

Мой файлик после корректировки

Вычисленный запрос

Запрос после модификации (внимание — подобное вырезание, конечно же вырезает и функционал, я просто многое не использую — поэтому порезал. так что «7 раз отмерь 1 отреж»)

Статистика до (товаров в базе около 5k)

Статистика «после»

P.S. Следующим шагом будет полный отказ от Apache — переход на связку nginx+php as fastcgi

Что по идее должно сильно разгрузить память (если получится — можно на мускул будет побольше выделить).

У нас 17 комментариев на запись “Снижение нагрузки на сервер. Оптимизация VitrueMart.”

Почему бы Вам не высказать своем мнение! Позвольте нам узнать, что Вы думаете...

  1. 1 On 12.11.2010, Nikolay said:

    Всегда напрягала тугость этого компонента… (та и сама джумла — не спринтер). Может ваш рецепт улучшит ситуацию. Опробую. Спасибо!

  2. 2 On 10.12.2010, Александр said:

    Вот пошел свой мебельный магазин http://optimmebel.ru оптимизировать, надеюсь все сработает как надо

Оставить комментарий