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


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.