Magento neden bu kadar yavaş? [kapalı]


138

Magento genellikle çok yavaş mı?

Bu benim onunla ilk deneyimim ve yönetici paneli değişiklikleri yüklemek ve kaydetmek çok zaman alıyor. Test verileriyle birlikte varsayılan bir kurulumdur.

Barındırıldığı sunucu Magento dışındaki diğer sitelere süper hızlı hizmet vermektedir. Magento'nun bu kadar yavaş yapan PHP koduyla ilgili nedir ve düzeltmek için ne yapılabilir?


12
Hangi donanımı çalıştırıyorsunuz? Magento'nun tecrübelerime göre ciddi donanım desteğine ihtiyacı var.
jitter

3
Ben destek istemiyorum, ama kod. Umudum, birinin geçmişte bunu yaşamış olması ve bu tür ağır davranışlardan kaçınmak için kodu optimize etmiş olmasıydı. Tüm site genelinde geçerli olduğundan, işaret etmek için belirli bir kod snippet'im yok. Konuya daha fazla bakmam gerekecek.
mr-euro

18
Magento'nun 6000'den fazla sınıf dosyası vardır ve evde kullanım için değil kurumsal kullanım için oluşturulmuştur. APC olmadan olayı yüklemeyi düşünmeyin. Ben küçük dükkanlar için tavsiye değil.
Elzo Valugi

1
Bayrağınıza gelince, @Jonesome: bu soru çok geniştir ve ... muhtemelen bu noktada biraz tarihli. Bununla birlikte, şimdi kurulumlarını optimize etmek için çalışan herkes için iyi bir kaynak olabilecek Magento sorunları ( Magento ) için özel bir sitemiz var .
Shog9

1
@ Shog9 Magento için eklentiler geliştiren ve destekleyen bir takımı yönetiyorum. Bu sorunun neredeyse her gün ortaya çıktığını söyleyebilirim. Magento çok (çok) kaynak yoğun olması nedeniyle "normal" bir lamba uygulaması değildir. Bu konu önemlidir. Kapatılması, bu ortak konuşmayı herkes için talihsiz olan SO'dan uzaklaştırır.
Jonesome

Yanıtlar:


184

Magento'yu performans için optimize etmede teğetsel olarak yer aldım, ancak sistemin bu kadar yavaş olmasının birkaç nedeni

  1. Magento'nun bazı bölümleri MySQL'in üstüne uygulanan bir EAV veritabanı sistemi kullanır. Bu, tek bir "şeyi" sorgulamak, genellikle birden çok satırı sorgulamak anlamına gelir

  2. Sahnelerin arkasında, bellekte dev XML ağaçları oluşturmayı ve sonra aynı ağaçları bilgi için "sorgulamayı" içeren çok şey var (uygulama yapılandırması, sistem yapılandırması, düzen yapılandırması vb.). Bu hem hafızayı (ağaçları depolamak) hem de CPU'yu (ağaçları ayrıştırmak) alır. Bunlardan bazıları (özellikle düzen ağacı) çok büyük. Ayrıca, önbelleğe alma açık değilse, bu ağaç diskteki dosyalar ve her istek üzerine oluşturulur .

  3. Magento, sınıfları geçersiz kılmanıza izin vermek için yapılandırma sistemini kullanır. Bu güçlü bir özelliktir, ancak bir model, yardımcı veya denetleyici başlatıldığında, orijinal bir sınıf dosyasının veya bir geçersiz kılma sınıf dosyasının gerekli olup olmadığını belirlemek için ekstra PHP komutlarının çalıştırılması gerektiği anlamına gelir. Bu toplanır.

  4. Yerleşim sisteminin yanı sıra, Magento'nun şablon sistemi çok sayıda yinelemeli oluşturma içerir. Bu toplanır.

Genel olarak, Magento Mühendisleri, her şeyden önce, mümkün olan en esnek, özelleştirilebilir sistemi oluşturmakla görevlendirildi ve daha sonra performans konusunda endişeleniyorlardı.

Daha iyi performans sağlamak için yapabileceğiniz ilk şey önbelleği açmaktır (Sistem -> Önbellek Yönetimi). Bu, Magento çeşitli XML ağaçlarını oluştururken devam eden bazı CPU / disk engellemesini hafifletir.

Yapmak isteyeceğiniz ikinci şey , ev sahibi ve operasyon ekibinizin Magento'nun performans ayarlama deneyimine sahip olmasını sağlamaktır . Sizi görmek için 7 $ / ay planına güveniyorsanız, iyi şanslar.


10
Kapsamlı açıklama için teşekkür ederim. Magento esneklik sağlarken gerçekten çok güçlüdür. Başlangıçta sadece bazı kötü yazılmış SQL nedeniyle durur yazar yazar olduğunu düşündüm, ama şimdi başlangıçta beklenen sahne arkasında çok daha fazlası olduğunu fark ediyorum. Not: dükkan sahibi tarafından eklenen ürünler nedeniyle önbellekleme devre dışı bırakıldı. Önbellek açıkken, mağaza kurulurken beni önbelleği devre dışı bırakmaya zorlayan ürünlerden şikayet etti. Özel bir sunucuda barındırılıyor, ancak görünüşe göre Magento'yu kendi özel kutusuna taşımak zorunda kalacağım.
mr-euro

4
Bir süre önce XHProf ile profilli oldum. XML ayrıştırma işlemi çok zaman aldı - sanırım bu listeye dikkat edin.
Morgan Tocker

1
Magento'yu HHVM'de çalıştırmanın bunu daha iyi hale getirip getirmeyeceğini merak ediyordum. En son HHVM'nin Magento'yu desteklemediğini kontrol ettim, ancak yapıldıysa bu yardımcı olur mu?
Bharadwaj Srigiriraju

1
Bu çok açıklıyor. Bilmek savaşın yarısıdır. Bunun nasıl yapıcı sayılabileceğini görmüyorum.
flcoder

Besteci kullanıyorsanız, bestecinin otomatik yükleyici dosyalarını optimize etmeyi (eflatun performans yönergelerine bakın) ve Magento2 için üretim modunu açmayı unutmayın! Vernik de çok iyi bir fikirdir, uygulamanızın tam sayfa önbellekle ilgili sorunları yoksa.
Dmitri Sologoubenko

54

Alan Storm'un önbelleklemeyle ilgili önerilerine ek olarak, özellikle önbellekleme ile ilgili olarak incelemenizi önereceğim iki şey var:

- Önbelleğe almanın disk yerine memcached olduğundan emin olun.

Birkaç magento kurulumuna bakıyorum ve sisteme herhangi bir yük getirdiğinizde, memcached çok daha hızlı performans göstermeye başlıyor. Ve ölü değiştirmek kolay (en azından diğer magento şeyler yapmaya göre!)

İyi bir başlangıç ​​noktası burada: http://www.magentocommerce.com/boards/viewthread/12998/P30/ - ama daha önce memcached kullanmadıysanız, bununla ilgili bazı genel bilgilere de bakmaya değer.

- Şablonu / görünümü önbelleğe almayı etkinleştir.

Bu iyi bir makale: http://inchoo.net/ecommerce/magento/magento-block-caching/

Magento sitesinde de iyi olanlar var (google magento blok önbellekleme), ama şu anda aşağı.

İki sentimi blok önbelleğe eklemek için, / app / code / local'da kendi bloklarınızı oluşturmanızı, çekirdek olanları genişletmenizi ve önbellek parametrelerini tanımlamanızı, xxx_Cache olarak adlandırmanızı ve bunun yerine bu blokları kullanmak için düzeninizi güncellemenizi tavsiye ederim. çekirdek olanlar. Bu şekilde, magento'yu yükselttiğinizde değişikliklerinizi kaybetmekten veya sistemi kırmaktan kaçınırsınız.


3
Puan için teşekkürler. Daha önce üretimde kullanmadığım memcached'a bir göz atacağım. Blokları klonlama konusunda da iyi bir fikir.
mr-euro

3
Benlumbey ne dedi ikinci, ben windows server çalıştırırken memcached kullanmıyorum, ama / var dizin bir katı hal sürücüde depolamak ve bu benim için büyük bir fark yarattı.
Rick J

@rickj - evet, ./var klasörü daha hızlı yapmak için her şey kesinlikle yardımcı olur, ben de memcached önce tmpfs kullanmayı denedim ve bu da iyi bir destek var.
benlumley

Daha sonra çok düğümlü ortam için memcached daha az yükü var gibi görünüyor sadece tek bir düğüm için apc önbellek kullanmak için eklemek istiyorum.
sbditto85

2
Evet doğru. Ancak, PHP'yi nasıl çalıştırdığınıza bağlı olarak bazı uyarılar vardır, her PHP işlemi için ayrı bir APC önbelleği elde edebilirsiniz - bu, PHP işlemlerinizi her X isteğinde bisiklete biniyorsanız daha da az optimum hale gelir.
benlumley

23

Henüz görmediyseniz, Magento ve Rackspace, Magento'nun performans ayarlaması hakkında bir beyaz kağıt oluşturmak için bir araya geldi. Bu mükemmel. https://support.rackspace.com/whitepapers/building-secure-scalable-and-highly-available-magento-stores-powered-by-rackspace-solutions/

--- Düzenle ---

Yeni kullanıma sunulan başka bir büyük kaynak (Ekim 2011): http://www.sessiondigital.com/assets/Uploads/Mag-Perf-WP-final.pdf

(Bu konuda Alan Storm sayesinde teşekkürler.)


Güncelleme için teşekkürler, daha sonra derinlemesine okuyacağım.
mr-euro

2
Bu ikinci bağlantı artık öldü.
Laizer

1
İlk bağlantı da öldü.
Edward

Bağlantılar koptu. Ner
Ner

1
Rackspace'in Teknik İncelemesi için doğrudan bağlantı (bağlantı # 1).
Levi Figueira

17

Yönetici arayüzünüzün çok yavaş olmasının çok açık olmayan bir nedeni de olabilir. Magento'nun Mage_AdminNotification adlı bir modülü vardır. Bu uzantıyı devre dışı bırakmayı deneyin. Çünkü yaptığı şey, yeni güncelleme mesajları için magentocommerce.com sorgusudur. Sunucuları yavaşsa, ağ gecikmesi ve harici haberlerin yüklenmesi nedeniyle yönetici sayfanız bekler ve aslında yavaştır. Giden sunucu bağlantınızı bir güvenlik duvarı üzerinden güvenli hale getirdiyseniz, yönetici arayüzü magentocommerce.com'a ulaşamadığında zaman aşımını bekleyeceği için bu daha da sinir bozucu olabilir.

Devre dışı bırakmak için: Sistem -> Yapılandırma'ya gidin, en alta kaydırın ve Gelişmiş'e (Gelişmiş bölümünde) basın. Şimdi devre dışı bırakın Mage_AdminNotificationve kaydedin!


4
Bu, çok hızlı bir geliştirme kutusunda ne kadar yavaş çalıştığımı her zaman hayal kırıklığına uğratan yerel geliştirme ortamımdaki performansta önemli bir fark yarattı. Teşekkür ederim!
random_user_name

Magento2'de: Mağazalar-> Yapılandırma-> Gelişmiş-> Gelişmiş, ardından devre dışı bırakın Mage_AdminNotification.
Scott C Wilson

6

Magento ile sadece yüzeysel bir deneyimim var. Paylaşılan bir ızgara sunucusuna yükledim ve sayfa yükleme ~ 5 + saniye sürdü. Bir toygarda, CMS siteleri adanmış sunucusu için optimize edilmiş bilgisayarınıza kurdum ve çok, çok çabuk hissettim.

Dedicated hosting ~ 10 Joomla vardı! ve bir VBullitin sitesi çalışıyor.

Benim tahminim, sadece paylaşılan barındırma performans değil olacak. Aşırı abonelik, Magento'nun gerektiği gibi çalışmasına yetecek kadar kaynağa izin vermeyecek.


6

Şirketimdeki yönetilen sunucu optimizasyonuna daha çok katılıyorum ama sizin için birkaç ipucum olabilir. İlk olarak, Zend sunucusunun kod izleme özelliğini kullanarak koda daha yakından bakabilirsiniz. İşlerin nerede ve ne zaman kirlendiğini görmenizi sağlayacaktır.

Benlumley'in önbellek konusundaki düşüncelerini tamamen paylaşıyorum. Barındırdığımız sitelerin çoğunda blok önbelleğe alma özelliği bile yoktur. Bu önbellek açıkça çağrılmalı ve "varsayılmamalıdır". Kodunuzu henüz bu mekanizmanın bir parçası olmamışsa, kesinlikle denemek istediğiniz bir şey. EE sürümünüz varsa, canavarın en iyisini elde etmek için Tam sayfayı alabilirsiniz.

Ters proxy de çok yardımcı olacaktır. Statik kaynakları önbelleğe alır ve ön sunucularınızın php yorumlama yığını üzerindeki baskıyı önemli ölçüde azaltır.

Oturumları ve Magento önbelleğini bir RAM diskine yazmayı unutmayın. Bu kesinlikle sizi başka bir performans seviyesine götürecektir.

Burada hala söylenecek çok şey var ama zamanım azalıyor. 1.4.1 CE sürümünde iyi kodlanmış, 2x5650 Xeon + 16 GB RAM sunucusunda çalışan ve üstte bir Rproxy'ye sahip olan iyi bir sitenin, herkese düzgün sayfaları olan günde 50.000 benzersiz ziyaretçiyi alabileceğini bilmelisiniz. .


5

Apache'den LiteSpeed'e geçmek bize çok yardımcı oldu. Ek olarak: MySQL'in ayarlarını düzenleme, Fooman Speedster'ı (js ve css dosyalarını sıkıştırmak / birleştirmek için modül) ve APC'yi yüklemek. Magento ayrıca kurumsal sürümden en iyi performansı nasıl alacağınıza dair bir beyaz kağıt yayınladı, ancak diğer sürümler için de aynı derecede geçerlidir: http://www.magentocommerce.com/whitepaper/


4

Magento alışveriş sepetinizin yavaş çalışmasının birçok nedeni var, ancak mazeret yok, sorunu ortadan kaldırmak ve oldukça hızlı bir şekilde yapmak için çeşitli yollar var. Htaccess dosyanızı değiştirerek Gzip'i etkinleştirmek bir başlangıçtır. Fooman speedster uzantısını da yükleyebilirsiniz. Kullanılan sunucu türü mağazanızın hızını da belirler. Daha fazla ipucu ve daha iyi bir açıklama burada http://www.interactone.com/how-to-speed-up-magento/


4

İlk yüklediğimde yüklenmesi 30 saniye süren sayfalar vardı. Sunucum ram veya işlemci içinde maxed değildi, bu yüzden ne yapacağımı bilmiyordum. Firebug'un net paneline bakıldığında, sayfa başına yaklaşık 100 dosya yüklüyordu ve her birinin bağlanması uzun sürdü. Fooman speedster ve htaccess yüklerindeki gzip yüklendikten sonra, sunucumdaki diğer alışveriş sepetlerinde olduğu gibi 3 saniyeye düştü.


3

Veritabanı tasarımı çok iyi olmadığı için Magento çok yavaş. Kod dağınık ve güncellenmesi ve optimize edilmesi çok zor. Böylece tüm optimizasyonlar kod yerine önbellek ile yapılır.

Diğer yandan. Birçok araç içeren bir web mağazasıdır. Esnek bir web mağazasına ihtiyacınız varsa, çok güçlü bir sunucu satın alın ve iyi olacaksınız.


1
Veritabanı tasarımı aslında çok iyi ve esnektir.
Siyah

3

performansa karşı işlevselliğe de düşecektir.

Ham performans, nginx, php-fpm, memcached, apc ve uygun şekilde tasarlanmış bir sunucu kullanılarak elde edilir.

Plesk ve magento performansı gibi işlevsellik, bir magento performans bulutu tasarlanırken tüm altyapıyı perspektif alarak ele alınabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.