私はいくつかのMagento CEショップを運営しており、キャッシングでスピードアップしていますが、カートとチェックアウトはまだ遅いままです。これらのページを高速化するための経験やヒントはありますか?
おそらくデータベースを最適化することを通して?
チェックアウトから注文を保存するときに一部のクエリが実行され、サーバーのスロークエリログに表示され、データベースがボトルネックになっているようです。
私はいくつかのMagento CEショップを運営しており、キャッシングでスピードアップしていますが、カートとチェックアウトはまだ遅いままです。これらのページを高速化するための経験やヒントはありますか?
おそらくデータベースを最適化することを通して?
チェックアウトから注文を保存するときに一部のクエリが実行され、サーバーのスロークエリログに表示され、データベースがボトルネックになっているようです。
回答:
個人的な経験から、Mage_Rssモジュールを無効にして、チェックアウトプロセスで4回「キャッシュクリーン」を強制します-ファイルシステムキャッシュを使用している場合は非常に高価ですが、データベースまたはmemcachedを使用している場合はおそらくまだ高価です。
CEはダウンロード可能な製品を使用していない限り、同様の理由でMage_Downloadable のみを無効にします。これにより、カートに複数のアイテムがある場合、チェックアウトとカートアクションが高速化されcheckout_type_onepage_save_order_after
ます。カートに。
xhprof / xhguiを接続して、プロファイリングを行います。
Module "Enterprise_PricePermissions" requires module "Mage_Downloadable
実験的な方法で解決したい場合は、ドイツのミュンヘンで最初のmagento hackathonから拡張機能があります。
https://github.com/magento-hackathon/MongoDB-OrderTransactions
mysql-serverがそれらを書き戻すための負荷がない場合、彼らは注文をmongo dbのキューに入れました。しかし、このプロジェクトの準備がどこまで進んでいるかはわかりません。Afaikはすべてのライティングを機能させますが、バックライティングは機能しません。
苦労しているMagento CEのバージョンがわかりません。しかし、CE 1.6で深刻なパフォーマンスの問題が発生しました。
理由:インデックスが間違っているか、欠落しています。CE 1.6.2で修正された
場合、それが役立つかどうかを確認できます。
合計73行で38行のチェックアウト時間を123秒から4秒に短縮しました!!!!
ここに来る:
/*!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 */;
大規模なデータベース操作を高速化する最良の方法は、データベースの使用に最適化された独自のサーバーにデータベースを配置することです。コード単位でチェックアウト領域に改善できるものはほとんどありません(ただし、Configurableなどの特定の種類の製品は、引用プロセスを完全に停止させる可能性があります)。
DBで読み取りと書き込みを分割することを検討してください。すぐにレプリケーションをセットアップする必要がありますが、これは常にそれを行うことで私を心配しているものですが、他の人がそれを設定する最善の方法についての詳細を持っているかもしれません。