Tăng tốc giỏ hàng để thanh toán và kiểm tra lưu hành động


18

Tôi đang điều hành một số cửa hàng Magento CE và tăng tốc chúng bằng bộ nhớ đệm, tuy nhiên giỏ hàng và thanh toán vẫn còn chậm. Có ai có kinh nghiệm hoặc lời khuyên trong việc tăng tốc các trang này?

Có lẽ thông qua tối ưu hóa cơ sở dữ liệu?

Một số truy vấn đã được thực hiện khi lưu một đơn đặt hàng từ thanh toán sẽ hiển thị trong nhật ký truy vấn chậm trên máy chủ và cơ sở dữ liệu dường như là nút cổ chai.


chậm có nghĩa là gì? 1s? 5 giây? ... cũng cung cấp một số chi tiết về kích thước của các cửa hàng (số lượng sản phẩm đơn giản, số lượng cấu hình, kích thước của bảng sales_flat_quote *, v.v.).
FlorinelChis

Chậm là từ 5 đến 10 giây tùy thuộc vào mức độ bận rộn của cửa hàng. Có 50.000 sản phẩm đơn giản, không có loại nào khác. Id sales_flat_quote phải tìm kiếm vào ngày mai (không có tài khoản tại thời điểm này)
Sander Mangel

1
bạn có bao nhiêu quy tắc giá giỏ hàng? họ làm chậm giỏ hàng. Ngoài ra, chúng tôi hy vọng sẽ giải quyết vấn đề này trong bản phát hành Gói dịch vụ, dự kiến ​​Q1 / Q2 '13
Piotr Kaminski

@macki không có quy tắc giá tại thời điểm này, cảm ơn vì đã đề cập đến tho. đó là điều tốt để biết
Sander Mangel

Câu trả lời:


27
  1. Từ trải nghiệm cá nhân, vô hiệu hóa mô-đun Mage_Rss, điều này buộc 'dọn dẹp bộ đệm' 4 lần trong quá trình thanh toán - rất tốn kém nếu bạn đang sử dụng bộ đệm của hệ thống tập tin, có thể vẫn còn đắt nếu bạn đang sử dụng cơ sở dữ liệu hoặc memcached.

  2. CE Chỉ vô hiệu hóa Mage_Doadable vì những lý do tương tự miễn là bạn không sử dụng sản phẩm có thể tải xuống, điều này sẽ tăng tốc độ kiểm tra và hành động giỏ hàng khi bạn có nhiều mặt hàng trong giỏ hàng vì có người quan sát về những thứ như checkout_type_onepage_save_order_afternhân số thời gian phản hồi với # vật phẩm trong xe đẩy.

  3. Dây lên xhprof / xhgui và làm một số hồ sơ.


Cảm ơn XHProf và XHGui có vẻ như là một dự án cuối tuần tốt đẹp để tham gia
Sander Mangel

1
Bạn thực sự nên cố gắng khử mage_rss hoặc bình luận các quan sát viên của nó. tăng tốc độ lưu lệnh ngay lập tức
STANISLAS PIERRE-ALEXANDRE

1
Tôi muốn nghe phản hồi trực tiếp nếu thủ thuật vô hiệu hóa Mage_Rss hoạt động cho OP
philwinkle

2
Tôi muốn chỉ ra rằng EE yêu cầu Mage_Doadable là một phụ thuộc:Module "Enterprise_PricePermissions" requires module "Mage_Downloadable
philwinkle

1
Tôi không bao giờ báo cáo lại và tôi xin lỗi. Vô hiệu hóa Mage_Rss đã tăng tốc đáng kể, vô hiệu hóa Mage_Doadable không dẫn đến bất kỳ cải tiến hiệu suất đáng chú ý nào nhưng tôi phải nói rằng tôi đã không làm một tiêu chuẩn 'phù hợp', chỉ một vài lần chạy trong trình duyệt của tôi.
Sander Mangel

4
  • Đặt chỉ mục của bạn thành thủ công.
  • Vô hiệu hóa lưu trữ thẻ bộ nhớ cache

Cả hai thay đổi này sẽ có tác động MASSIVE đến hiệu suất vì nó ngăn Magento tuôn ra bộ nhớ cache và lập chỉ mục lại mỗi khi đơn hàng đi qua.

Mặc dù phải trả giá, nội dung đó có thể bị cũ do kết quả - mức cổ phiếu, v.v.


cảm ơn, mức cổ phiếu bị lỗi là một vấn đề trên hầu hết các cửa hàng tho. Nhưng tôi sẽ ghi nhớ nó cho các cửa hàng mà không quản lý chứng khoán!
Sander Mangel

2

Nếu bạn muốn giải quyết nó theo cách thử nghiệm, có một phần mở rộng từ hackathon magento đầu tiên ở munich, tiếng Đức:

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

Họ xếp hàng các đơn đặt hàng vào một db mongo, ý tưởng là, nếu máy chủ mysql không tải để ghi lại chúng. Nhưng tôi không biết dự án này đã sẵn sàng bao xa. Afaik làm việc tất cả các văn bản, nhưng không viết lại.


Cảm ơn, tôi đã thực sự xem xét các giải pháp noQuery và đây có thể là một điểm khởi đầu tốt đẹp!
Sander Mangel

2

Tôi không biết Phiên bản Magento CE của bạn mà bạn đang vật lộn. Nhưng tôi đã có vấn đề nghiêm trọng về hiệu suất với CE 1.6 của mình.
Lý do: Chỉ số sai và thiếu. Chúng được cố định trong CE 1.6.2
Bạn có thể kiểm tra xem nó có giúp bạn không.
Tôi đã giảm thời gian thanh toán cho 38 dòng với tổng cộng 73 mặt hàng từ 123 giây xuống còn 4 giây !!!!

Nó đến đấy:

/*!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

Cách tốt nhất để tăng tốc các hoạt động cơ sở dữ liệu lớn là để cơ sở dữ liệu của bạn trên máy chủ của riêng nó được tối ưu hóa cho việc sử dụng cơ sở dữ liệu. Không có nhiều thứ có thể được cải thiện trong khu vực kiểm tra mã khôn ngoan (mặc dù một số loại sản phẩm nhất định, như Cấu hình, thực sự có thể làm hỏng quá trình trích dẫn) vì rất ít có thể được lưu trữ an toàn.


Cảm ơn, đã sợ vì điều đó. Nó đã là một cài đặt chuyên dụng với máy chủ DB riêng biệt. Hy vọng họ sẽ tối ưu hóa việc thanh toán trong Mage 2 :)
Sander Mangel

1
2.0 Bao gồm rất nhiều bài viết lại cho đến nay, vì vậy chúng ta có thể hy vọng. Thành thật mà nói, bản thân các mô hình sản phẩm có rất nhiều thứ khiến cho việc thanh toán bị chậm - nó phải lặp đi lặp lại qua các trường hợp loại cho từng sản phẩm trong khi tạo báo giá / chuyển đổi theo đơn đặt hàng và đó có thể là một quá trình tốn kém.
Andrew Quackenbos

1

Có thể nhìn vào việc phân chia các lần đọc và viết ra trong DB của bạn. Bạn sẽ cần thiết lập sao chép ngay lập tức mặc dù đó là điều luôn làm tôi lo lắng khi thực hiện nó mặc dù những người khác có thể có thêm thông tin về cách tốt nhất để định cấu hình nó.


Tôi không chắc đó có phải là một giải pháp đáng tin cậy để thành thật hay không, nghe có vẻ như là một thay đổi khá lớn của dữ liệu không đầy đủ. Ý tưởng là thực sự tốt đẹp tho!
Sander Mangel

Tôi đồng ý ở một mức độ nhất định và thừa nhận tôi chưa bao giờ thực sự làm điều đó mặc dù tôi thấy nhiều người viết bài đăng trên blog, v.v ... cho thấy họ đã thấy sự cải thiện rõ rệt về hiệu suất. Nếu tôi có thể tìm thấy một số điểm chuẩn, vv Tôi sẽ đăng chúng lên.
Richard Cleverley

Cảm ơn Richard, tôi đã nói chuyện với công ty lưu trữ của tôi về điều này. Họ có nhiều kinh nghiệm hơn với những thứ tôi nghĩ. Nếu tôi có thêm một thông tin tôi sẽ đăng nó
Sander Mangel
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.