Magento2 ทำงานช้ามากในการพัฒนา localhost


25

ฉันเพิ่งเริ่มพัฒนาส่วนขยายหรือการปรับแต่งใหม่ล่าสุดของ magento2 และความประทับใจแรกของฉันคือฝันร้าย ฉันต้องรอประมาณ 20-30 วินาทีสำหรับการเปลี่ยนแปลงทุกครั้งหรือไม่ จริงๆ?

ฉันกำลังพูดถึงโหมดการพัฒนาฉันรู้ว่าในการผลิตด้วยการเปิดใช้งานแคชและสิ่งอื่น ๆ เว็บไซต์สามารถราบรื่น แต่เมื่อฉันทำงานกับปัญหาส่วนขยายหรือเลย์เอาต์ฉันจำเป็นต้องลบไฟล์สแตติกล้างแคช ฯลฯ

คำถามของฉันคือนักพัฒนา M2 ทั้งหมดทำงานอย่างไร? เพราะฉันไม่เชื่อว่าคุณต้องรอ 20s-30s เพื่อรีเฟรชหน้าเว็บ ...

สภาพแวดล้อมของฉัน: พีซีของฉัน "ดี" i5 พร้อม RAM ขนาด 8GB ฉันต้องทำงานกับ Windows ดังนั้นฉันจึงใช้คนจรจัด:

  • การใช้ซีพียูทั้ง 4 คอร์
  • ใช้ RAM ขนาด 5120MB
  • Ubuntu / trusty64 - Ubuntu 14.04
  • PHP เวอร์ชัน 7.0.12-1 + deb.sury.org ~ trusty + 1
  • MariaDB - 10.1.18-MariaDB-1 ~ เชื่อถือได้
  • Magento 2.1.2 ได้รับการติดตั้งด้วย sampledata เท่านั้น (ไม่มีการติดตั้งโมดูลเพิ่มเติม)
  • (ถามฉันว่าคุณอยากรู้เพิ่มเติมหรือไม่)

เกิดอะไรขึ้นกันแน่? โดยปกติแล้ว M2 จะตอบสนองได้ช้า แต่ก็ไม่เป็นไรประมาณ 5-10 วินาทีในการโหลดหน้าเว็บ แต่บางครั้ง (โดยทั่วไปมากกว่าบางครั้ง) มันจะติดตลอดไป! บางครั้งเป็นหน้าแรกและบางครั้งเป็นไฟล์ css, js, html แต่ปัญหามักจะเกิดขึ้นกับ TTFB

ฉันเห็นปัญหาในการตั้งค่าวิซาร์ดด้วย ... ด้วย angular.js ไฟล์เหล่านี้จะคงอยู่ตลอดไป ...

รูปภาพ 2 รูปนี้เกี่ยวกับการนำทางภายในวิซาร์ดการตั้งค่า

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

จากนั้นอีกหนึ่งการนำทางในแคตตาล็อกส่วนหน้า: http://imgur.com/oXYC52D

ฉันถามอะไรกันแน่ เป็นเรื่องปกติหรือไม่ พวกคุณทำงานกับช่วงเวลานี้หรือไม่? ฉันแสดงความคิดเห็นกับเพื่อนร่วมงานบางคนและเราก็ไม่เชื่อว่าฉันต้องทำงานแบบนี้เหรอ? บางครั้งฉันหมดหวังที่จะรอดูหน้าจอตลอดเวลา ...

หากมีคนขอให้ฉันแสดงให้เขาทดสอบเช่นการสร้างผลิตภัณฑ์ใหม่หรือสิ่งที่เขาเพิ่งจะประหลาด ... การสร้างคำสั่งซื้อใหม่กรอกข้อมูลในเขตข้อมูลและทุกสาขาดำเนินการ js ที่กินเวลานาน 5-6 ...

ฉันไม่รู้ แต่ฉันรู้สึกแย่ในการพัฒนากับสิ่งนี้ ...


ยังไม่ได้มีโอกาสเล่นกับวีโอไอพี 2: แต่ id สมมติว่าปัญหาด้านประสิทธิภาพส่วนใหญ่มาจากสภาพแวดล้อมที่เร่าร้อนของคุณ คุณใช้ virtualbox กับคนพเนจรหรืออย่างอื่น การใช้หลายคอร์กับ virtualbox ลดประสิทธิภาพการทำงาน คุณเรียกใช้ magento จากโฟลเดอร์ที่แชร์บน vagrant> magento เขียนไฟล์กลับไปยังการแชร์เดียวกันกับที่คุณได้รับปัญหาด้านประสิทธิภาพ
Olli Tyynelä

นอกจากนี้คุณยังอาจมีหน่วยความจำไม่เพียงพอในระบบของคุณสิ่งที่นำไปสู่การใช้ swap บนโฮสต์ถ้าคุณให้ 5gigs คนจรจัด เพิ่มจำนวนเท่านั้นถ้าคุณต้องการมันจริง ๆ
Olli Tyynelä

ปัญหาใหญ่ของคุณคือคุณใช้ Windows ฉันใช้ Windows เป็นเวลาหลายปีและมันก็ช้ามากกับคนเร่ร่อน / วีโอไอพี นี่เป็นเพราะโหมดการซิงก์ไฟล์ไม่ขึ้นอยู่กับ nfs ฉันเริ่มบูทสองครั้งบนเดสก์ท็อป Ubuntu และไซต์คุณภาพเยี่ยมของฉันนั้นเร็วมากหลังจากนั้นฉันก็มี mac ซึ่งใช้ NFS และก็เร็วมาก
Shawn Abramson

ใช่มันพเนจรไปกับกล่องเสมือนจริง ทำไมการใช้คอร์เพิ่มเติมจึงต้องลดประสิทธิภาพลง? ฉันถือว่าการให้ทรัพยากรทั้งหมดแก่ VM อาจช้า "พีซีของฉัน" แต่เร็วกว่า VM ของฉัน ... และโฟลเดอร์ที่ฉันใช้คือ / var / www (ฉันพยายามที่จะไม่ใช้โฟลเดอร์ที่ใช้ร่วมกันเป็นเพียง "linux" สิ่งที่ทำงานอยู่ ตอนนี้) ฉันจะดูสิ่งที่ล้มเหลวได้อย่างไร ฉันสามารถรันคำสั่งด้านบนหรือคำสั่งเช่นนั้นได้ .... แต่ไม่รู้วิธีตีความ ...
slayerbleast

@ShawnAbramson อ๋อ ... เราแนะนำให้ติดตั้งดูอัลบูทเพียงเพื่อลองเพราะฉันบอกว่าเราไม่เชื่อว่านักพัฒนา M2 กำลังทำงานเหมือนที่ฉันกำลังทำอยู่ ...
slayerbleast

คำตอบ:


8

ฉันลองทุกอย่างและสิ่งเดียวที่ใช้ได้คือเครื่องเสมือนที่ให้ bitnami https://bitnami.com/stack/magento/virtual-machine

อย่างจริงจังฉันไม่ทราบว่ามี vm นี้ แต่ไปอย่างรวดเร็วจริงๆ ฉันพยายามสร้าง VM ของฉันโดยใช้การติดตั้งใหม่ของ Ubuntu, CentOS, ฯลฯ แต่ก็ไม่ได้ผลดีเหมือน VM นี้


ฉันคิดว่าความแตกต่างที่สำคัญกับสเป็คของ VM นี้คือ memcache? ซึ่งบน Windows ของฉัน (อย่างน้อย PHP 7 เป็นไปไม่ได้)
MackieeE

6

ปิดการใช้งานการรวม CSS และ JS และการย่อขนาด:

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

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

ดูคู่มือนี้ในการปรับปรุงประสิทธิภาพของวีโอไอพี 2


1
การตั้งค่าเริ่มต้นมีค่าเหล่านี้อยู่แล้ว และสิ่งนี้ไม่ส่งผลกระทบมากนัก ...
slayerbleast

ดังนั้นการผสานจะมีประโยชน์บนเซิร์ฟเวอร์ออนไลน์หรือไม่ มีค่าใช้จ่ายเพิ่มเติมในการดำเนินการและไม่ดาวน์โหลดใช่หรือไม่
Mohammed Joraid

ทำไมคุณถึงปิดการใช้งาน CSS / JS การควบรวมและการลดขนาดมันเป็นตัวเลือกอย่างแท้จริงที่จะเพิ่มความเร็วซึ่งดูเหมือนว่าฉันจะยิงตัวเองด้วยเท้า
John

4

ฉันพบว่าโหมดผู้พัฒนาปิดการใช้งานทุกอย่าง - ซึ่งเกินความจริง มีบางแง่มุมที่ฉันต้องการแคชเช่นการแปล โชคดีที่env.phpคุณยังสามารถตั้งค่าแคชที่จะใช้โดยเฉพาะ:

'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,
      ),

นี่คือข้างต้นที่ฉันเลือกที่จะแคชขณะที่พัฒนาบน Checkout เนื่องจากนี่เป็นส่วนหน้าอย่างมาก ฉันเลือกที่จะไม่เลย์เอาต์แคช บล็อกและเต็มหน้าเพื่อดูการเปลี่ยนแปลงของฉัน


ขอบคุณหนึ่งล้าน! ฉันมีปัญหานี้เพราะฉันอัพเกรด Magento2 เป็นเวอร์ชันที่ใหม่กว่าและทำการติดตั้งใหม่ เห็นได้ชัดว่ามันเขียนทับ env.php ของฉันซึ่งทำให้มันช้าไม่สิ้นสุด การแก้ไข env.php นี้แก้ไข ขอบคุณอีกครั้ง!
codiga

4

คำแนะนำจาก Magento ที่โพสต์หลังจากตอบคำถามนี้แล้ว อ่านคำตอบอื่น ๆ ฉันคิดว่าข้อมูลนี้อาจเป็นประโยชน์เพิ่มเติม

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

การกำหนดค่าที่เหมาะสมที่สุด

ต่อไปนี้เป็นรายการของการเพิ่มประสิทธิภาพที่คุณสามารถทำได้บนเครื่องพัฒนาท้องถิ่นของคุณ

  • Magento แนะนำให้ติดตั้งและใช้ PHP 7 รุ่นล่าสุดที่รองรับเพื่อเพิ่มประสิทธิภาพ
  • แทนที่ฐานข้อมูล MySQL ของคุณด้วย Percona
  • ตรวจสอบให้แน่ใจว่าคุณติดตั้งและเปิดใช้งาน PHP OPcache
  • Xdebug ถูกปิดใช้งานตามค่าเริ่มต้น เปิดใช้งานคุณสมบัตินี้เฉพาะเมื่อคุณต้องการเพราะต้องใช้หน่วยความจำจำนวนมากและลดประสิทธิภาพ การกำหนดค่า xdebug.max_nesting_level ต้องตั้งค่าเป็น 200 หรือมากกว่าสำหรับ Magento คุณสามารถเพิ่มหน่วยความจำที่มีให้กับ PHP เพื่อเพิ่มประสิทธิภาพด้วย Xdebug
  • หากคุณต้องการข้อมูลตัวอย่างคุณสามารถติดตั้งโดยใช้ผู้แต่งหรือโดยการโคลนที่เก็บ
  • เพื่อเพิ่มความเร็วในการพัฒนาส่วนหน้าให้ปิดการผสาน CSS และ JavaScript
  • ตรวจสอบให้แน่ใจว่าได้เปิดแคชแล้ว (นี่เป็นพฤติกรรมเริ่มต้น) โดยทั่วไปแล้วควรปิดแคชหน้าและบล็อกแคชเท่านั้นเพื่อการพัฒนาและเปิดอีกครั้งเมื่อทำการทดสอบ
  • การตรวจสอบการประทับเวลา Opcache ควรเปิดเพื่อการพัฒนาอยู่เสมอ การพัฒนาเป็นไปไม่ได้เมื่อเปิด opcache และปิดการตรวจสอบความถูกต้องอีกครั้งเนื่องจากการแก้ไข PHP ใด ๆ จะต้องมีการรีเซ็ตแคช

สำหรับฉัน Opcache ทำเคล็ดลับ มันโหลดเร็วมาก
Amit Singh

อีกสิ่งหนึ่งที่ฉันพบคือ Xdebug สามารถเปิดใช้งานได้ตามค่าเริ่มต้นซึ่งมีผลการดำเนินงานยอดเยี่ยม ตรวจสอบ /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini หลังจากการเปลี่ยนแปลงฉันคิดว่าคุณต้องรีสตาร์ทตัวเริ่ม container container {web-container-name}
เอียนที่ Xantek

1

เปิดแคชของคุณ

ไปที่<your magento 2 directory>/binและเรียกใช้คำสั่งmagento cache:enableนี้

ทำความสะอาดแคชเมื่อคุณแก้ไขส่วนหน้าเพื่อดูสิ่งที่คุณแก้ไข

ไปที่<your magento 2 directory>/binและเรียกใช้คำสั่งmagento cache:cleanนี้

อ้างอิงของฉัน

ฉันยังใหม่กับวีโอไอพี 2 ด้วย ฉันหวังว่าบางคนมีวิธีทำให้ Magento 2 เร็วขึ้นแม้ว่าจะปิดการใช้งานแคชก็ตาม


1
ไม่ทราบว่านี่เป็นโซลูชันที่ใช้งานได้หรือไม่ ... ทุกที่มันบอกว่าจะปิดการใช้งานแคชในโหมดการพัฒนา ...
slayerbleast

6
แน่นอนถ้าฉันเปิดใช้งานแคชไซต์จะเร็วขึ้น ... แต่การเปลี่ยนแปลงทุกอย่างฉันจะต้องทำความสะอาดแคช ... ยังคงเสียเวลาฉันคิดว่า ...
slayerbleast

1

การตั้งค่าของฉันบน Ubuntu 16.10 สำหรับการพัฒนาส่วนหน้าสำหรับการแก้ไขน้อย :

  1. ตั้งค่าโหมดผู้พัฒนา:

    php bin/magento deploy:mode:set developer

  2. เปิดใช้งานแคชทั้งหมด:

    php bin / magento c: เปิดใช้งาน

  3. Fronted Development Workflow ถูกตั้งค่าเป็นการรวบรวมฝั่งเซิร์ฟเวอร์

  4. หลังจากการเปลี่ยนแปลงใด ๆ ในไฟล์ทำงานน้อย

    ฮึดฮัดสะอาด

(ครั้งสุดท้ายที่ฉันเริ่มต้นที่จะจัดการ - ดูเสี้ยงฮึดฮัดด้วยการเรียกดูสดและยอดเยี่ยม)


0

เพียงแค่ต้องการแบ่งปันประสบการณ์ส่วนตัวของฉันวิธีแก้ปัญหาที่ฉันเกิดขึ้นคือการติดตั้ง Xampp ด้วย php เวอร์ชัน 7.0 เนื่องจาก Magento ไม่สามารถทำงานร่วมกับ Php รุ่นที่สูงขึ้นได้อย่างสมบูรณ์ ฉันลองใช้ Bitnami Image ตามคำตอบ แต่ไม่ได้ผลเพราะฉันคาดหวังว่า Xampp 7.0.23 ลิงก์ดาวน์โหลด


จริงๆ? ด้วย xampp ทำงานได้ดี? ฉันลองมาหลายครั้งแล้วและมันก็แย่มาก ... เวอร์ชั่นวีโอไอพีอะไร บางทีพวกเขาอาจแก้ไขประสิทธิภาพด้วยเวลานี้ ฉันจะลองอีกครั้ง และทำไม Bitnami Image ไม่ทำงานอย่างที่คุณคาดไว้
slayerbleast

ฉันมี Magento 2.1 และ Xampp 7.0 เพิ่มลิงค์ด้านบน, การเปรียบเทียบภาพ Bitnami กับ Xampp 7.0 ฉันพบว่า xampp ง่ายและเร็วขึ้น
user3127648

0

การเพิ่ม PHP memory_limitในไฟล์ php.ini จะสร้างความแตกต่างได้ดี อย่างไรก็ตามมันจะไม่ทำให้มันราบรื่นมาก (แม้ว่ามันจะประหยัดเวลา)

ค่าเริ่มต้นคือ 512M บนเครื่องของฉันฉันตั้งค่านี้ที่ "-1" (ไม่ จำกัด ) และให้เวลาโหลดที่ดีขึ้น

ค่าที่แนะนำคือ memory_limit = 2G กล่าวถึงที่นี่

Magento หนักและต้องการฮาร์ดแวร์ประสิทธิภาพสูงเช่น SSD ที่จะราบรื่น :(


memory_limitไม่มีความสัมพันธ์กับประสิทธิภาพการทำงาน แต่อย่างใด มันชัดเจนจากชื่อของคำสั่ง
Danila Vershinin

@DanielV ฉันยังสงสัยเกี่ยวกับสิ่งนั้น แต่หลังจากนั้นฉันก็พบสิ่งนี้: devdocs.magento.com/guides/v2.2/install-gde/prereq/ …ที่ซึ่งมันบอกว่า 2G เป็นค่าที่แนะนำ
Binod - GoFundMonica

1
ขอแนะนำอีกครั้งด้วยเหตุผลของตนเอง ซึ่งไม่มีความเกี่ยวข้องใด ๆ กับประสิทธิภาพ ขีด จำกัด หน่วยความจำมีไว้เพื่อไม่ให้ระบบของคุณหยุดทำงานอย่างสมบูรณ์ในกรณีที่สคริปต์ PHP บางอัน (หรือในกรณีนี้โมดูล Magento) จบลงด้วยการกิน RAM ของเซิร์ฟเวอร์ทั้งหมด ไม่มีผลกระทบต่อประสิทธิภาพอย่างแน่นอนจากการตั้งค่าต่ำเกินไปหรือสูงเกินไป มันเป็นเพียงแนวทางป้องกันเพื่อทำให้ระบบล้มเหลวมากขึ้น และฉันก็ประหลาดใจที่คนทั่วไปคิดว่าการให้ความทรงจำมากกว่านี้หมายถึงการทำงานนั้นทำได้โดยคำสั่งนี้ มันไม่ได้และไม่เคยจะเป็น
Danila Vershinin

จุดที่น่าสนใจดาเนียล ฉันคิดเอาเองว่าสุ่ม เราจะสาธิตสิ่งนี้ได้อย่างไร พอยน์เตอร์ใดที่คุณสามารถแนะนำฉันด้วยเพื่อที่ฉันจะได้สัมผัสสิ่งนี้?
Binod - GoFundMonica

ตั้งค่าต่ำเกินไป (เช่น 16MB ซึ่งไม่เพียงพอสำหรับ M2) และ PHP จะล้มเหลวเนื่องจากข้อผิดพลาดร้ายแรง ติดตั้งโมดูลได้มากเท่าที่คุณจะทำได้และตั้งค่าไว้สูงเกินไป (เช่น 4GB) และสิ่งต่างๆจะทำงานได้ดีจนกว่าคุณจะมีผู้เยี่ยมชมไซต์เพิ่มขึ้นเล็กน้อยซึ่งจะทำให้เซิร์ฟเวอร์ของคุณเข้าสู่สถานะหน่วยความจำไม่เพียงพอ คุณไม่จำเป็นต้องทำการทดลองเหล่านี้หากคุณเพิ่งอ่านเอกสารสำหรับคำสั่งนั้น PHP ทำงานในหน่วยความจำตลอดเวลา ไม่สลับไปที่ดิสก์หรือทำสิ่งที่ตลกเช่นนั้น
Danila Vershinin

0

หากคุณมีปัญหาในการตั้งค่าในกล่อง Vagrant อาจเป็นวิธีแชร์โฟลเดอร์ของคุณ ควรแบ่งใช้ผ่าน NFS

หลังจากล้อเล่นไปมากับกล่องต่าง ๆ มากมายฉันก็รู้ว่าถึงแม้ว่าฉันได้ตั้งค่า NFS ไว้ใน config แต่มันก็ไม่ได้ทำงานจริงและระบบการแบ่งปัน VirtualBox มาตรฐานก็เข้ามาแทนที่

ฉันกลับไปสู่พื้นฐานและตั้งค่ากล่อง LEMP อย่างง่ายและติดตั้งปลั๊กอินนี้:

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

ยืนยันว่า NFS ทำงานได้และทุกอย่างเป็นไปด้วยดี


0

สิ่งที่สามารถทำให้การติดตั้ง Magento 2 ของคุณรวดเร็วบนเซิร์ฟเวอร์ภายในเครื่องของคุณหรือโดยทั่วไปในทุกสภาพแวดล้อมของเซิร์ฟเวอร์

  1. ลดขนาด JS และ CSS
  2. ใช้แอปพลิเคชันแคชเช่น Redis หรือ Memcached
  3. เปิดใช้งานแคชทั้งหมดเช่น block_html เลย์เอาต์ page_cache และอื่น ๆ ที่จัดทำโดย Magento 2
  4. ผสาน CSS และ JS
  5. เปิดใช้งานผลิตภัณฑ์แบบเรียบและหมวดหมู่

ตอนนี้เมื่ออยู่ในสภาพแวดล้อมการพัฒนาให้ล้างแคชที่จำเป็นเท่านั้นแทนการล้างแคชทั้งหมดเพื่อป้องกันการสร้างแคชใหม่ทั้งหมด


0

เหตุผลหลักที่ทำให้ magento2 ช้าในโหมดนักพัฒนาซอฟต์แวร์นั้นเกี่ยวข้องกับไฟล์สแตติกและไฟล์คอมไพล์ที่สร้างขึ้นอย่างรวดเร็ว

มี 3 โซลูชั่นสำหรับสิ่งนี้:

  • เมานต์ไดเร็กทอรีทั้งหมดด้วย NFS (SSD ยังเป็นข้อบังคับ)

  • ติดตั้งเฉพาะไดเรกทอรีแอพ (ใครก็ตามที่ฮาร์ดแวร์ของคุณจะทำงานได้ดี) แต่คุณสูญเสียการเข้าถึง / ไดเรกทอรีผู้ขายบนเครื่องโฮสต์ของคุณ

  • เมานต์โปรเจ็กต์ทั้งหมดด้วย rsync และแยกไดเรกทอรีที่ไฟล์ถูกสร้างขึ้น (pub / static, created / code ฯลฯ ... )

ฉันใช้งานมันลองดู: https://github.com/zepgram/magento2-fast-vm/

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.