Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 8 Ответов
  • 2367 Просмотров
*

oshaly

  • Захожу иногда
  • 60
  • 0 / 0
vm - столько косяков.....
« : 12.02.2010, 11:24:46 »
что-то я уже пожалела, что связалась с этим модулем. Вижу, что его "допиливать" и "допиливать" напильниками)
Столько неоптимизированных запросов, сейчас надо их все разом оптимизировать, иначе сайт практически лежит. И увеличение ресурсов хостинга почти не помогает.
Как справляетесь, тоже оптимизируете каждый раз?
*

pervoi

  • Осваиваюсь на форуме
  • 21
  • 0 / 0
Re: vm - столько косяков.....
« Ответ #1 : 12.02.2010, 12:36:35 »
Ещё не проводили нагрузочное тестирование. В тестовой базе болтается несколько продуктов - для разработки достаточно.
В каких случаях возникают галюны?
*

oshaly

  • Захожу иногда
  • 60
  • 0 / 0
Re: vm - столько косяков.....
« Ответ #2 : 12.02.2010, 23:00:19 »
15000 товаров в базе и все, список товарв в рубрике грузится полчаса, а то и вобще ошибка 500.
*

pervoi

  • Осваиваюсь на форуме
  • 21
  • 0 / 0
Re: vm - столько косяков.....
« Ответ #3 : 13.02.2010, 00:17:06 »
Перспектива печальная. А с хостингом проблемы исключены?
*

oshaly

  • Захожу иногда
  • 60
  • 0 / 0
Re: vm - столько косяков.....
« Ответ #4 : 13.02.2010, 05:11:03 »
насчет хостинга - сменили тариф, сейчас виртуальный выделенный сервер, 128 оперативка и много другого. счас вожусь с оптимизацией запросов, т.к. хостер грозится отключить аккаунт.
*

oshaly

  • Захожу иногда
  • 60
  • 0 / 0
Re: vm - столько косяков.....
« Ответ #5 : 13.02.2010, 06:51:32 »
вот этот запрос
Код
SELECT DISTINCT `product_name`,`products_per_row`,`category_browsepage`,`category_flypage`,`jos_vm_category`.`category_id`,
                                `jos_vm_product`.`product_id`,`product_full_image`,`product_thumb_image`,`product_s_desc`,`product_parent_id`,`product_publish`,`product_in_stock`,`product_sku`, `product_url`,
                                `product_weight`,`product_weight_uom`,`product_length`,`product_width`,`product_height`,`product_lwh_uom`,`product_in_stock`,`product_available_date`,`product_availability`,`jos_vm_product`.`mdate`, `jos_vm_product`.`cdate`
  FROM (`jos_vm_product`, `jos_vm_category`, `jos_vm_product_category_xref`,`jos_vm_shopper_group`)
  LEFT JOIN `jos_vm_product_price`
  ON `jos_vm_product`.`product_id` = `jos_vm_product_price`.`product_id`
  WHERE (`jos_vm_product_category_xref`.`product_id`=`jos_vm_product`.`product_id` OR `jos_vm_product_category_xref`.`product_id`=`jos_vm_product`.`product_parent_id`)
 
  AND `jos_vm_product_category_xref`.`category_id`=`jos_vm_category`.`category_id`
 
  AND `jos_vm_product_category_xref`.`category_id`=2
 
  AND ((`jos_vm_product`.`product_id`=`jos_vm_product_price`.`product_id`
  AND `jos_vm_shopper_group`.`shopper_group_id`=`jos_vm_product_price`.`shopper_group_id`) OR `jos_vm_product_price`.`product_id` IS NULL)
 
  AND `jos_vm_shopper_group`.`default` = 1
 
  AND `product_parent_id`=0
 
  AND `product_publish`='Y'
 
  AND `category_publish`='Y'
 
  GROUP BY `jos_vm_product`.`product_sku`
 
  ORDER BY `jos_vm_product`.`product_name` ASC
  LIMIT 1100, 100

убивает все, что было "нажито непосильным трудом".


он выполняется от 30 до 100 сек.
и кто такой криволапый написал его, да еще зашил непонятно где - не могу найти.

*

oshaly

  • Захожу иногда
  • 60
  • 0 / 0
Re: vm - столько косяков.....
« Ответ #6 : 13.02.2010, 08:18:54 »
Рою дальше. Вышеук.запрос формируется  в .../www/administrator/components/com_virtuemart/html/shop_browse_queries.php  - специально для страницы со списком товаров.
Непонтяно пока как он может повлиять на другие страницы магазина (в том числе админку), но если его хорошенько подчистить прямо тут, то жить станет легче. А также добавить несколько индексов на некотоыре таблицы.

Далее на странице списка товаров окромя этого запроса формируется по 22(!) запроса на каждый товар. Т.е. если выводим по 100 товаров, то считай более 2200 запросов на странице, весело. Запросы по большей части.. хм.. можно было некотоыре вобще убрать нфк.

Вот серия запросов для одного товара, блин как бы  их до одного сократить....

Код
#
/administrator/components/com_virtuemart/classes/ps_database.php:120
/administrator/components/com_virtuemart/classes/ps_session.php:518
Execute time:6.6E-5 sec.
SELECT id
  FROM jos_menu
  WHERE link='index.php?option=com_virtuemart'
  AND params LIKE '%product_id=5306%'
  AND published=1
#
/administrator/components/com_virtuemart/classes/ps_database.php:120
/administrator/components/com_virtuemart/classes/ps_session.php:527
Execute time:5.9E-5 sec.
SELECT id
  FROM jos_menu
  WHERE link='index.php?option=com_virtuemart'
  AND params LIKE '%category_id=2%'
  AND published=1
#
/administrator/components/com_virtuemart/classes/ps_database.php:120
/administrator/components/com_virtuemart/classes/ps_session.php:535
Execute time:0.000112 sec.
SELECT id
  FROM jos_menu
  WHERE link='index.php?option=com_virtuemart'
  AND params LIKE '%flypage=flypage.tpl%'
  AND published=1
#
/administrator/components/com_virtuemart/classes/ps_database.php:120
/administrator/components/com_virtuemart/classes/ps_session.php:543
Execute time:8.3E-5 sec.
SELECT id
  FROM jos_menu
  WHERE link='index.php?option=com_virtuemart'
  AND params LIKE '%page=shop.product_details%'
  AND published=1
#
/administrator/components/com_virtuemart/classes/ps_database.php:120
/administrator/components/com_virtuemart/classes/ps_product.php:1092
Execute time:8.5E-5 sec.
SELECT product_id, `jos_vm_product`.*
  FROM `jos_vm_product`
  WHERE `product_id`=5306
#
/administrator/components/com_virtuemart/classes/ps_database.php:120
/administrator/components/com_virtuemart/classes/ps_product.php:2374
Execute time:0.000321 sec.
SELECT amount,is_percent
  FROM jos_vm_product,jos_vm_product_discount
  WHERE product_id='5306'
  AND (start_date<='1266037494' OR start_date=0)
  AND (end_date>='1266017760' OR end_date=0)
  AND product_discount_id=discount_id
#
/administrator/components/com_virtuemart/classes/ps_database.php:120
/administrator/components/com_virtuemart/classes/ps_product.php:2387
Execute time:6.2E-5 sec.
SELECT product_parent_id
  FROM jos_vm_product
  WHERE product_id=5306
#
/administrator/components/com_virtuemart/classes/ps_database.php:120
/administrator/components/com_virtuemart/classes/ps_product.php:2392
Execute time:0.000194 sec.
SELECT amount,is_percent
  FROM jos_vm_product,jos_vm_product_discount
  WHERE product_id='0'
  AND (start_date<='1266037494' OR start_date=0)
  AND (end_date>='1266017760' OR end_date=0)
  AND product_discount_id=discount_id
#
/administrator/components/com_virtuemart/classes/ps_database.php:120
/administrator/components/com_virtuemart/classes/ps_shopper_group.php:374
Execute time:6.3E-5 sec.
SELECT shopper_group_id,shopper_group_discount
  FROM jos_vm_shopper_group
  WHERE vendor_id='1'
  AND `default`='1'
#
/administrator/components/com_virtuemart/classes/ps_database.php:120
/administrator/components/com_virtuemart/classes/ps_product.php:1819
Execute time:6.6E-5 sec.
SELECT `product_price`, `product_price_id`, `product_currency`
  FROM `jos_vm_product_price`
  WHERE product_id=5306
  AND shopper_group_id=5   
  ORDER BY price_quantity_start
#
/administrator/components/com_virtuemart/classes/ps_database.php:120
/administrator/components/com_virtuemart/classes/ps_product.php:1092
Execute time:8.0E-5 sec.
SELECT product_id, `jos_vm_product`.*
  FROM `jos_vm_product`
  WHERE `product_id`=5306
#
/administrator/components/com_virtuemart/classes/ps_database.php:120
/administrator/components/com_virtuemart/classes/ps_product.php:1626
Execute time:6.3E-5 sec.
SELECT tax_rate
  FROM jos_vm_product, jos_vm_tax_rate
  WHERE product_tax_id=tax_rate_id
  AND product_id=5306
#
/administrator/components/com_virtuemart/classes/ps_database.php:120
/administrator/components/com_virtuemart/classes/ps_product.php:1092
Execute time:0.000122 sec.
SELECT product_id, `jos_vm_product`.*
  FROM `jos_vm_product`
  WHERE `product_id`=5306
#
/administrator/components/com_virtuemart/classes/ps_database.php:120
/administrator/components/com_virtuemart/classes/ps_product.php:1626
Execute time:8.3E-5 sec.
SELECT tax_rate
  FROM jos_vm_product, jos_vm_tax_rate
  WHERE product_tax_id=tax_rate_id
  AND product_id=5306
#
/administrator/components/com_virtuemart/classes/ps_database.php:120
/administrator/components/com_virtuemart/classes/ps_product_files.php:667
Execute time:7.2E-5 sec.
SELECT *
  FROM `jos_vm_product_files`
  WHERE `file_product_id`=5306
  AND `file_is_image`=1
  AND `file_published`=1
#
/administrator/components/com_virtuemart/classes/ps_database.php:120
/administrator/components/com_virtuemart/classes/ps_product_files.php:669
Execute time:5.9E-5 sec.
SELECT product_parent_id
  FROM jos_vm_product
  WHERE product_id=5306
#
/administrator/components/com_virtuemart/classes/ps_database.php:120
/administrator/components/com_virtuemart/classes/ps_product_files.php:670
Execute time:6.5E-5 sec.
SELECT *
  FROM `jos_vm_product_files`
  WHERE `file_product_id`=0
  AND `file_is_image`=1
  AND `file_published`=1
#
/administrator/components/com_virtuemart/classes/ps_database.php:120
/administrator/components/com_virtuemart/classes/ps_product_files.php:678
Execute time:6.7E-5 sec.
SELECT *
  FROM `jos_vm_product_files`
  WHERE `file_product_id`=5306
  AND `file_is_image`=0
  AND `file_published`=1
#
/administrator/components/com_virtuemart/classes/ps_database.php:120
/administrator/components/com_virtuemart/classes/ps_product_files.php:680
Execute time:6.1E-5 sec.
SELECT product_parent_id
  FROM jos_vm_product
  WHERE product_id='5306'
#
/administrator/components/com_virtuemart/classes/ps_database.php:120
/administrator/components/com_virtuemart/classes/ps_product_files.php:683
Execute time:6.6E-5 sec.
SELECT *
  FROM `jos_vm_product_files`
  WHERE `file_product_id`=0
  AND `file_is_image`=0
  AND `file_published`=1
#
/administrator/components/com_virtuemart/classes/ps_database.php:120
/administrator/components/com_virtuemart/classes/ps_product.php:1058
Execute time:6.3E-5 sec.
SELECT `product_id`
  FROM `jos_vm_product_attribute_sku`
  WHERE `product_id`=5306
#
/administrator/components/com_virtuemart/classes/ps_database.php:120
/administrator/components/com_virtuemart/classes/ps_product.php:1063
Execute time:6.1E-5 sec.
SELECT `attribute`,`custom_attribute`
  FROM `jos_vm_product`
  WHERE `product_id`=5306
#
/administrator/components/com_virtuemart/classes/ps_database.php:120
/administrator/components/com_virtuemart/classes/ps_product.php:1092
Execute time:8.1E-5 sec.
SELECT product_id, `jos_vm_product`.*
  FROM `jos_vm_product`
  WHERE `product_id`=5306
« Последнее редактирование: 13.02.2010, 08:22:08 от oshaly »
*

pervoi

  • Осваиваюсь на форуме
  • 21
  • 0 / 0
Re: vm - столько косяков.....
« Ответ #7 : 13.02.2010, 11:06:34 »
 :o класс.
В оптимизации не силён, как вы оптимизируете запросы?
*

oshaly

  • Захожу иногда
  • 60
  • 0 / 0
Re: vm - столько косяков.....
« Ответ #8 : 13.02.2010, 14:40:19 »
книжек много написано :) + делаем индексы.
Данный запрос просится на мощную переделку. Но в текущем проекте пока переделывать не стала, установила кеш, добавила индексы, +гзипование страниц. Ну вроде чуток пошустрее стало.  Товаров около 20 000. Когда по 100 на странице - думает секунд 10 и выше. При открытии страницы товара тоже долго думает.
Закешированным страницам YSlow дает оценку Grade C   Overall performance score 71
Незакешированным (по 100 на странице) -- Grade D   Overall performance score 68   
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться