체크 아웃 및 체크 아웃 저장 조치로 카트 속도 향상


18

여러 Magento CE 상점을 운영하고 있으며 캐싱 속도를 높이지만 카트와 결제는 여전히 느립니다. 이 페이지의 속도를 높이는 데 경험이나 팁이 있습니까?

아마도 데이터베이스 최적화를 통해?

결제에서 주문을 저장할 때 일부 쿼리가 서버의 느린 쿼리 로그에 표시되고 데이터베이스에 병목 현상이있는 것으로 보입니다.


느리게 무엇을 의미합니까? 1? 5 초? ... 또한 상점 크기 (간단한 제품 수, 구성 가능한 수, sales_flat_quote * 테이블 크기 등)에 대한 세부 사항도 제공합니다.
— FlorinelChis

상점의 사용량에 따라 5 초에서 10 초 사이가 느립니다. 50.000 간단한 제품이 있으며 다른 유형은 없습니다. sales_flat_quote id는 내일 조회해야합니다 (현재는 액세스 할 수 없음)
— Sander Mangel

1
장바구니 가격 규칙은 몇 개입니까? 그들은 카트를 느리게한다. 또한 서비스 팩 릴리스에서이 문제를 해결하기 위해 노력하고 있습니다. 'Q1 / Q2 '13
— Piotr Kaminski

@macki 언급 가격에 대해 현재 가격 규칙이 없습니다. 알아두면 좋은 점
— Sander Mangel

답변:


27
  1. 개인적인 경험에서, Mage_Rss 모듈을 비활성화하면 체크 아웃 프로세스에서 '캐시 정리'를 4 번 강제로 수행합니다. 파일 시스템 캐시를 사용하는 경우 매우 비쌉니다. 데이터베이스 나 memcached를 사용하는 경우 여전히 비쌉니다.

  2. CE Only Mage_Downloadable을 다운로드 할 수없는 이유는 다운로드 가능한 제품을 사용하지 않는 한 비슷한 이유 때문에 장바구니에 여러 항목이있을 때 checkout_type_onepage_save_order_after응답 시간에 항목 수 를 곱하는 것과 같은 관찰자가 있기 때문에 체크 아웃 및 카트 작업 속도가 빨라집니다. 카트에.

  3. xhprof / xhgui를 연결 하고 프로파일 링을 수행하십시오.


감사합니다 XHProf와 XHGui는 멋진 주말 프로젝트 인 것 같습니다
— Sander Mangel

1
실제로 mage_rss를 비활성화하거나 관찰자를 주석으로 처리해야합니다. 즉시 주문 저장 속도를 높입니다
— STANISLAS PIERRE-ALEXANDRE

1
Mage_Rss disable 트릭이 OP에서 작동하는 경우 직접 피드백을 듣고 싶습니다
— philwinkle

2
나는 EE 가 Mage_Downloadable을 종속성으로 요구 한다고 지적하고 싶다 :Module "Enterprise_PricePermissions" requires module "Mage_Downloadable
— philwinkle

1
나는 다시보고하지 않았고 미안하다. Mage_Rss를 비활성화하면 속도가 상당히 빨라졌으며 Mage_Downloadable을 비활성화해도 성능이 크게 향상되지는 않았지만 브라우저에서 몇 번만 실행하면 '적절한'벤치 마크를 수행하지 않았다고 말해야합니다.
— Sander Mangel

4
  • 색인을 수동으로 설정하십시오.
  • 캐시 태그 스토리지 비활성화

이러한 변경 사항은 주문이 진행될 때마다 Magento가 캐시를 플러시하고 다시 색인을 생성하지 못하도록하므로 성능에 큰 영향을 미칩니다.

그러나 결과적으로 재고 수준 등 콘텐츠가 오래 될 수 있습니다.


감사합니다. 잘못된 재고 수준은 대부분의 상점에서 문제가됩니다. 그러나 재고 관리가없는 상점에서는 염두에 두어야합니다!
— Sander Mangel

2

실험 방식으로 해결하려면 독일 뮌헨의 첫 마 젠토 해커 톤에서 확장 기능이 있습니다.

https://github.com/magento-hackathon/MongoDB-OrderTransactions

그들은 주문을 mongo db에 대기열에 넣습니다. mysql-server에 다시 쓸 수있는로드가 없다면 아이디어입니다. 그러나 나는이 프로젝트가 얼마나 멀리 준비되어 있는지 모른다. Afaik은 모든 글을 다 쓰지만 뒤 글을 쓰지는 않습니다.


고마워, 실제로 noSQL 솔루션을보고 있었고 이것이 좋은 출발점이 될 수 있습니다!
— Sander Mangel

2

어려움을 겪고있는 Magento CE 버전을 모르겠습니다. 그러나 CE 1.6에서 심각한 성능 문제가 발생했습니다.
이유 : 인덱스가 잘못되었거나 누락되었습니다. CE 1.6.2에서 수정 된
경우 도움이되는지 확인할 수 있습니다.
총 73 개 항목으로 총 123 초에서 4 초로 38 개 라인의 결제 시간을 줄였습니다 !!!!

여기에 온다 :

/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;

/* Foreign Keys must be dropped in the target to ensure that requires changes can be done*/

ALTER TABLE `core_url_rewrite` 
DROP FOREIGN KEY `FK_CORE_URL_REWRITE_CTGR_ID_CAT_CTGR_ENTT_ENTT_ID`  , 
DROP FOREIGN KEY `FK_CORE_URL_REWRITE_STORE_ID_CORE_STORE_STORE_ID`  ;


/* Alter table in target */
ALTER TABLE `catalog_category_entity_varchar` 
DROP KEY `MAGMI_CCEV_OPTIMIZATION_IDX` ;


/* Alter table in target */
ALTER TABLE `catalog_product_bundle_stock_index` 
DROP KEY `PRIMARY`, ADD PRIMARY KEY(`entity_id`,`website_id`,`stock_id`,`option_id`) ;


/* Alter table in target */
ALTER TABLE `catalog_product_entity_media_gallery` 
DROP KEY `MAGMI_CPEM_OPTIMIZATION_IDX` ;


/* Alter table in target */
ALTER TABLE `core_url_rewrite` 
CHANGE `id_path` `id_path` varchar(255)  COLLATE utf8_general_ci NULL COMMENT 'Id Path' after `store_id` , 
CHANGE `request_path` `request_path` varchar(255)  COLLATE utf8_general_ci NULL COMMENT 'Request Path' after `id_path` , 
CHANGE `target_path` `target_path` varchar(255)  COLLATE utf8_general_ci NULL COMMENT 'Target Path' after `request_path` , 
CHANGE `is_system` `is_system` smallint(5) unsigned   NULL DEFAULT 1 COMMENT 'Defines is Rewrite System' after `target_path` , 
CHANGE `options` `options` varchar(255)  COLLATE utf8_general_ci NULL COMMENT 'Options' after `is_system` , 
CHANGE `description` `description` varchar(255)  COLLATE utf8_general_ci NULL COMMENT 'Deascription' after `options` , 
CHANGE `category_id` `category_id` int(10) unsigned   NULL COMMENT 'Category Id' after `description` , 
CHANGE `product_id` `product_id` int(10) unsigned   NULL COMMENT 'Product Id' after `category_id` , 
ADD KEY `FK_CORE_URL_REWRITE_PRODUCT_ID_CATALOG_CATEGORY_ENTITY_ENTITY_ID`(`product_id`) , 
DROP KEY `FK_CORE_URL_REWRITE_PRODUCT_ID_CATALOG_PRODUCT_ENTITY_ENTITY_ID` , 
ADD CONSTRAINT `FK_CORE_URL_REWRITE_PRODUCT_ID_CATALOG_CATEGORY_ENTITY_ENTITY_ID` 
FOREIGN KEY (`product_id`) REFERENCES `catalog_product_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE CASCADE , 
DROP FOREIGN KEY `FK_CORE_URL_REWRITE_PRODUCT_ID_CATALOG_PRODUCT_ENTITY_ENTITY_ID`  ;


/* Alter table in target */
ALTER TABLE `eav_attribute` 
DROP KEY `MAGMI_EA_CODE_OPTIMIZATION_IDX` ;


/* Alter table in target */
ALTER TABLE `eav_attribute_option_value` 
DROP KEY `MAGMI_EAOV_OPTIMIZATION_IDX` ;


/* The foreign keys that were dropped are now re-created*/

ALTER TABLE `core_url_rewrite` 
ADD CONSTRAINT `FK_CORE_URL_REWRITE_CTGR_ID_CAT_CTGR_ENTT_ENTT_ID` 
FOREIGN KEY (`category_id`) REFERENCES `catalog_category_entity` (`entity_id`) ON DELETE CASCADE ON UPDATE CASCADE , 
ADD CONSTRAINT `FK_CORE_URL_REWRITE_STORE_ID_CORE_STORE_STORE_ID` 
FOREIGN KEY (`store_id`) REFERENCES `core_store` (`store_id`) ON DELETE CASCADE ON UPDATE CASCADE ;

/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;

1

큰 데이터베이스 작업 속도를 높이는 가장 좋은 방법은 데이터베이스를 데이터베이스 사용에 최적화 된 자체 서버에 두는 것입니다. 계산 영역에서 코드 단위로 개선 할 수있는 것은 많지 않습니다 (Configurable과 같은 특정 유형의 제품은 실제로 견적 프로세스를 중단시킬 수 있지만).


고마워요. 이미 별도의 DB 서버가있는 전용 설치입니다. 바라건대 그들은 Mage 2에서 결제를 최적화 할 것입니다 :)
— Sander Mangel

1
2.0 지금까지 많은 재 작성이 포함되어 있기 때문에 희망을 가질 수 있습니다. 솔직히 제품 모델 자체는 체크 아웃을 느리게 만드는 많은 요소입니다. 주문으로 견적 / 변환을 생성하는 동안 각 제품의 유형 인스턴스를 반복해야하므로 비용이 많이 드는 프로세스가 될 수 있습니다.
— Andrew Quackenbos

1

아마도 DB에서 읽기 및 쓰기를 분리하는 것을보십시오. 다른 복제본을 구성하는 최선의 방법에 대한 자세한 정보가있을 수 있지만, 복제를 수행하는 데있어 항상 걱정되는 것은 있지만 거의 즉시 복제 설정이 필요합니다.


솔직히 신뢰할만한 솔루션인지 확실하지 않은데, 불완전한 데이터가 상당히 크게 바뀌는 것처럼 들립니다. 아이디어는 정말 좋은 것입니다!
— Sander Mangel

나는 블로그 게시물을 쓰는 다양한 사람들이 그들이 성능의 현저한 개선을 보았 음을 제안하는 것을 보았지만 어느 정도 동의하고 실제로 실제로 한 적이 없다는 것을 인정합니다. 벤치 마크 등을 찾을 수 있으면 게시 할 것입니다.
— Richard Cleverley

고마워 Richard, 이것에 관해 나의 호스팅 회사와 대화를 나 have 다. 그들은 내가 생각하는 이런 종류의 것들에 대해 훨씬 더 많은 경험을 가지고 있습니다. 더 많은 정보가 있으면 게시하겠습니다
— Sander Mangel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.