Magento2 localhost gelişiminde çok yavaş çalışıyor


25

Geçenlerde magento2'de yeni uzantılar veya özelleştirmeler geliştirmeye başladım ve ilk izlenim bir kabus oldu. Yaptığım her değişiklik için 20-30 saniye beklemem gerekiyor mu? Gerçekten mi?

Geliştirme modundan bahsediyorum , önbelleğin etkin olduğu üretimde ve web sitesinin sorunsuz olabileceğini biliyorum. Ancak bir uzantı veya düzen sorunuyla çalışırken, statik dosyaları silmeyi, önbelleği temizlemeyi vb.

Sorum şu, siz M2 geliştiricileriniz nasıl çalışıyor? çünkü sayfayı yenilemek için 20'li-30'ları beklemeniz gerektiğine inanmıyorum ...

Benim ortamım: Bilgisayarım 8GB RAM ile "iyi" i5. Windows ile çalışmam gerekiyor, bu yüzden serseri kullanıyorum:

  • 4 çekirdekli işlemcilerin kullanımı
  • 5120 MB RAM kullanın
  • Ubuntu / güvenilir 64 - Ubuntu 14.04
  • PHP Sürüm 7.0.12-1 + deb.sury.org ~ güvenilir + 1
  • MariaDB - 10.1.18-MariaDB-1 ~ güvenilir
  • Magento 2.1.2 sadece sampledata ile yüklenir (daha fazla modül kurulmaz)
  • (Bana daha fazla şey bilmek istersen sor.)

Tam olarak ne oluyor? Genellikle M2, sayfaları doldurmak için yaklaşık 5-10 saniye tamam, yavaş ama tamam olarak yanıt verir, ancak bazen (bazen daha sık sık) sadece sonsuza dek durur! bazen ilk sayfadır ve bazen css, js, html dosyalarıdır ancak her zaman sorun TTFB'dedir.

Ben de sihirbaz kurulumunda bir sorun gördüm ... angular.js ile bu dosyalar sonsuza kadar sürer ...

Bu 2 fotoğraf kurulum sihirbazı içinde gezinmekle ilgilidir.

http://imgur.com/Izoyuhj http://imgur.com/Vs5q8eT

Daha sonra ön katalogda dolaşan bir tane daha: http://imgur.com/oXYC52D

Tam olarak ne soruyorum? Bu normal mi? Siz çocuklar bu zamanlamayla mı çalışıyorsunuz? Bunu bazı meslektaşlarımla yorumladım ve inanmıyoruz, böyle çalışmak zorunda mıyım? Bazen ekranı izlerken her zaman beklemeyi umuyorum.

Biri benden bir test yapmamı isterse, yeni bir ürün veya onun gibi bir şey yeni çıldırmak gibi ... Yeni bir düzen oluşturmak, alanları doldurmak ve her alan 5-6s süren bir js yürütür ...

Bilmiyorum ama bu konuda gelişmekte olduğum için kendimi kötü hissediyorum.


Magento 2 ile oynama şansınız olmadı: ancak id, performans sorunlarının çoğunun serseri ortamınızdan geldiğini varsayalım. Sanal kutuyu serseriyle falan mı kullanıyorsun? Virtualbox ile birden fazla çekirdek kullanılması performansı düşürür. Magento'yu serseride paylaşılan bir klasörden çalıştırıyor musunuz> magento, performans sorunlarıyla karşılaştığınız dosyaları tekrar paylaşıyor.
Olli Tyynelä

Ayrıca, sisteminizde hafızanız azalıyor olabilir; serseri 5 gig verirseniz, ana bilgisayar üzerinde takas kullanımına neden olur. sadece gerçekten ihtiyacınız varsa, miktarı artırın.
Olli Tyynelä

Sorununuzun büyük bir kısmı, Windows'da olmanız. Yıllardır Windows'taydım ve serseri / magento'yla süper yavaştı. Bunun nedeni dosya senkronizasyon modudur, nfs ile aynı değildir. Ubuntu masaüstünde çift önyüklemeye başladım ve magento sitelerim çok hızlıydı, daha sonra bir süre sonra NFS kullanan bir mac aldım ve bu da çok hızlı.
Shawn Abramson

Evet, virtualbox ile serseri. Neden daha fazla çekirdek kullanmanın performansı düşürmesi gerekiyor? Tüm kaynakları VM’ye vermek "bilgisayarımın" yavaş olabileceğini, ancak VM’imin daha hızlı olabileceğini varsayıyorum ... Ve kullandığım klasör / var / www (paylaşılan klasör kullanmaya çalıştım, sadece çalışan "linux" şimdi). Neyin başarısız olduğunu nasıl görebilirim? Üst ya da onun gibi emirleri uygulayabilirim .... ama nasıl yorumlanacağımı bilmiyorum ...
slayerbleast

@ShawnAbramson Yep ... bunu denemek için çift önyükleme kurmayı önerdik çünkü M2 geliştiricilerin şu anda yaptığım gibi çalıştığına inanmadığımızı söylediğim gibi ...
slayerbleast 13

Yanıtlar:


8

Her şeyi denedim ve çalıştığı tek şey bitnami sağlayan sanal makine. https://bitnami.com/stack/magento/virtual-machine

Cidden, bu vm'nin ne olduğunu bilmiyorum ama çok hızlı gidiyor. VM'mi yeni bir Ubuntu, CentOS, vb. Kurulumu kullanarak oluşturmayı denedim.


Bence bu sanal makinenin özelliğindeki en büyük fark memcache? Bu, Windows'umda (En azından PHP 7'de mümkün değil)
MackieeE

6

CSS / JS birleştirme ve küçültme işlevini devre dışı bırakma:

Stores > Configuration > CSS Settings (Javascript Settings) > Merge CSS (Merge JS) > NO

Stores > Configuration > CSS Settings (Javascript Settings) > Minify CSS (Minify JS) > NO

Ayrıca Magento 2 performansını nasıl artıracağınıza dair bu kılavuza bakın .


1
Varsayılan ayarlar zaten bu değerlere sahiptir. Ve bu o kadar çok etkilemez ...
slayerbleast

Öyleyse birleştirme çevrimiçi bir sunucuda faydalı olur mu? İşleme yönelik daha fazla ek yük ve indirme yapmama?
Mohammed Joraid

Neden birleştirmek ve küçültmek, CSS / JS'yi devre dışı bıraktın, tam anlamıyla orada hızını arttırmak için bir seçenek, bu beni ayağından vurmak gibi görünüyor
John

4

Geliştirici modunun her şeyi etkisiz hale getirdiğini buldum - ki bu fazla pişmiş. Çeviri gibi önbelleğe almak istediğim bazı yönler var. Neyse ki, env.phpözellikle hangi önbellekleri kullanacağınızı belirleyebilirsiniz:

'cache_types' => 
      array (
        'config' => 1,
        'layout' => 0,
        'block_html' => 0,
        'collections' => 1,
        'reflection' => 1,
        'db_ddl' => 0,
        'eav' => 1,
        'customer_notification' => 1,
        'target_rule' => 1,
        'full_page' => 0,
        'config_integration' => 1,
        'config_integration_api' => 1,
        'translate' => 1,
        'config_webservice' => 1,
        'compiled_config' => 1,
      ),

Bu oldukça ön uç olduğu için Google Checkout'ta geliştirirken önbelleğe almayı seçtiğim şey buydu. Düzeni önbelleğe almamayı seçtim; Değişikliklerimi görmek için Bloklar ve Tam sayfa.


Bir milyon teşekkürler! Bu sorunu yaşadım, çünkü Magento2'yi daha yeni bir sürüme yükselttim ve yeni bir kurulum yaptım. Anlaşılan, env.php yazıyordu, ki bu da onu yavaşlatıyordu. Env.php dosyasına yapılan düzeltme düzeltildi. Tekrar teşekkürler!
codiga

4

Bu soruyu cevapladıktan sonra Magento'dan gelen öneriler gönderildi. Diğer cevapları okumak Bu bilginin faydalı bir ilave olabileceğini düşünüyorum.

http://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/optimal-dev-environment.html

Optimal Yapılandırma

Yerel geliştirme makinenizde yapabileceğiniz optimizasyonların listesi aşağıdadır

  • Magento, performansı artırmak için PHP 7'nin en son desteklenen sürümünü kurmanızı ve kullanmanızı önerir.
  • MySQL veritabanınızı Percona ile değiştirin.
  • PHP OPcache'i kurduğunuzdan ve etkinleştirdiğinizden emin olun.
  • Xdebug varsayılan olarak kapalıdır. Bu özelliği yalnızca ihtiyacınız olduğunda etkinleştirin, çünkü çok fazla bellek gerektirir ve performansı düşürür. Xdebug.max_nesting_level yapılandırmasının Magento için 200 veya daha büyük bir değere ayarlanması gerekir. Xdebug on ile performansınızı artırmak için PHP için mevcut belleği artırabilirsiniz.
  • Örnek verilere ihtiyacınız varsa, besteci kullanarak veya depoları klonlayarak yükleyebilirsiniz.
  • Ön uç gelişimini hızlandırmak için, CSS ve JavaScript birleştirmeyi kapatın.
  • Önbelleğe almanın açık olduğundan emin olun (varsayılan davranış budur). Genel olarak, geliştirme için yalnızca sayfa önbelleği ve blok önbelleği kapatılmalı ve yeniden açılmalıdır.
  • Opcache zaman damgası doğrulaması, geliştirme için her zaman açık olmalıdır. Herhangi bir PHP modifikasyonu bir önbellek sıfırlaması gerektireceğinden, geliştirme işlemi opcache açıkken ve yeniden validasyon kapalı olduğunda mümkün değildir.

Opcache benim için hile yaptı. Şimdi oldukça hızlı yükleniyor.
Amit Singh

Karşılaştığım diğer bir şey de Xdebug'un varsayılan olarak etkin olması ve aynı zamanda bir performans isabetine sahip olması. Check /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini Değiştirdikten sonra, konteyner limanını yeniden başlatmanız gerektiğini düşünüyorum {web-container-name}
Ian, Xantek

1

Önbelleğini aç.

Git <your magento 2 directory>/binve bu komutu çalıştır magento cache:enable.

Neyi düzenlediğinizi görmek için ön ucu düzenlerken önbelleği temizleyin.

Git <your magento 2 directory>/binve bu komutu çalıştır magento cache:clean.

Benim referans

Ben de 2. magento için yeniyim. İnşallah birinin önbellek devre dışı kalsa bile magento 2'yi hızlı bir şekilde yapması için bir yol vardır.


1
Bunun uygulanabilir bir çözüm olup olmadığını bilmiyorum ... Her yerde geliştirme modunda önbelleği devre dışı bırakmak diyor ...
slayerbleast

6
Tabii ki önbelleği etkinleştirirsem, site daha hızlı
ilerler

1

LESS düzenlemeleri için ön geliştirme için Ubuntu 16.10'daki kurulumum :

  1. Geliştirici modunu ayarla:

    php bin/magento deploy:mode:set developer

  2. Tüm önbellekleri etkinleştir:

    php bin / magento c: etkinleştir

  3. Fronted Development Workflow, Sunucu tarafı derlemeye ayarlandı

  4. Daha az dosyada değişiklik yapıldıktan sonra

    hırıltı temiz

(Başlamak için en son başladığımda - canlı gezinme ve harika gösterimi ile grunt izle)


0

Sadece kişisel deneyimlerimi paylaşmak istiyorum. Buraya geldiğim çözüm, Magento'nun Php sürümüyle tam uyumlu olmadığı için Xppp'i php sürüm 7.0 ile kurmaktı. Cevap olarak listelenen Bitnami Image denedim ama Xampp 7.0.23 Beklediğim gibi işe yaramadı


Gerçekten mi? Xampp ile iyi çalışıyor mu? Çok defa denedim ve çok kötüydü ... Hangi Magento sürümü? Belki bu sefer bazı performansları düzeltmişlerdir. Tekrar deneyeceğim. Ve neden Bitnami Görüntüsü beklediğiniz gibi çalışmıyor?
slayerbleast

Yukarıda eklenmiş Magento 2.1 ve Xampp 7.0 bağlantısı var, Bitnami görüntüsünü Xampp 7.0 ile karşılaştırmak iam kolay ve hızlı buldum
user3127648

0

PHP'yi memory_limitphp.ini dosyasında arttırmak iyi bir fark yaratacaktır. Ancak onu çok pürüzsüz yapmaz (Her ne kadar zaman kazandıracak olsa da).

Varsayılan değer 512M'dir. Yerel makinemde bunu "-1" (sınırsız) olarak ayarlarım ve daha iyi yükleme süresi sağlar.

Tavsiye edilen değer burada belirtilen memory_limit = 2G'dir .

Magento ağırdır ve SSD gibi pürüzsüz olması için yüksek performanslı donanım gerektirir :(


memory_limitPerformansla hiçbir ilgisi yoktur. Direktifin adından açıkça anlaşılıyor.
Danila Vershinin

@DanielV. Ben de bunu merak ediyordum ama sonra bunu buldum: devdocs.magento.com/guides/v2.2/install-gde/prereq/... o tavsiye edilen değer olarak 2G diyor
Binod - GoFundMonica

1
Yine, kendi nedenleriyle tavsiye edilir. Performansla kesinlikle alakası yok. Bellek sınırı yalnızca bazı PHP komut dosyalarının (veya bu durumda, Magento modüllerinin) tüm sunucu RAM'lerini yemesi durumunda sisteminizi tamamen durdurmamak için vardır. Değeri çok düşük veya çok yüksek ayarlamaktan kesinlikle hiçbir performans etkisi yoktur. Sistemi daha güvenli hale getirmek için önleyici bir yönergedir. Ve şaşırdım ki, insanlar buna daha fazla bellek vermenin, bu yönerge ile performans elde edileceği anlamına geliyor. Değil ve asla olmayacak.
Danila Vershinin

İlginç nokta, Daniel. Aslında bunu kör olarak varsaydım. Bunu nasıl gösterebiliriz? Bunu tecrübe edebilmem için bana rehberlik edebileceğiniz herhangi bir işaretçi var mı?
Binod - GoFundMonica

Çok düşük bir değere ayarlayın (örneğin, M2 için kesinlikle yeterli olmayan 16 MB) ve PHP ölümcül hatayla başarısız olacaktır. Olabildiğince çok modül kurun ve çok yüksek ayarlayın (örn. 4GB) ve birkaç site ziyaretçisi elde edinceye kadar işler düzgün şekilde çalışacak ve bu da sunucunuzun Bellek Yetersiz durumuna ulaşmasına neden olacaktır. Bu yönerge için sadece belgeleri okuduysanız, bu deneylere ihtiyacınız yoktur. PHP her zaman bellekte çalışır. Diske değişmez veya böyle komik şeyler yapmaz.
Danila Vershinin

0

Eğer bir Vagrant kutusunda ayarlamalar yapmakta zorlanıyorsanız, neredeyse kesinlikle klasörlerinizin paylaşılmasıyla ilgili olacaktır. NFS üzerinden paylaşılmalılar.

Pek çok farklı kutu ile uğraştıktan sonra, NFS'yi yapılandırmada ayarladığım halde aslında çalışmadığını ve standart VirtualBox paylaşım sisteminin devraldığını fark ettim.

Temel bilgilere geri döndüm ve basit bir LEMP kutusu kurdum ve şu eklentiyi yükledim:

https://github.com/Learnosity/vagrant-nfs_guest

Onaylandı NFS çalışıyordu ve her şey yolundaydı.


0

Magento 2 kurulumunuzu yerel sunucunuzda veya genel olarak herhangi bir sunucu ortamında hızlı bir şekilde yapabilmenizi sağlayacak şeyler.

  1. JS ve CSS'yi küçültün
  2. Redis veya Memcached gibi bir önbellek uygulaması kullanın.
  3. Magento 2 tarafından sağlanan block_html, layout, page_cache vb. Gibi tüm önbellekleri etkinleştirin.
  4. CSS ve JS'yi Birleştirme
  5. Yassı ürün ve kategorileri etkinleştirin.

Şimdi, geliştirme ortamında, tüm önbellek yeniden oluşturulmasını önlemek için tüm önbelleği temizlemek yerine yalnızca gerekli önbelleği temizleyin.


0

Magento2'nin geliştirici modunda yavaş olmasının ana nedeni, anında oluşturulan binlerce statik ve derlenmiş dosya ile ilgilidir.

Bunun için 3 çözüm var:

  • NFS ile tüm dizini bağla (SSD hala zorunludur).

  • Yalnızca uygulama dizinini bağla (donanımınız her kim çalışırsa çalışır), ancak ana makinenizdeki / satıcı dizinine erişiminizi kaybedersiniz.

  • Tüm projeyi rsync ile bağlayın ve dosyaların oluşturulduğu dizinleri hariç tutun (pub / static, oluşturulan / code vb.).

Bu işi yaptım, bir deneyin: https://github.com/zepgram/magento2-fast-vm/

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.