Magento2 chạy rất chậm khi phát triển localhost


25

Gần đây tôi đã bắt đầu phát triển trên các phần mở rộng hoặc tùy chỉnh mới của magento2 và ấn tượng đầu tiên của tôi là một cơn ác mộng. Tôi phải đợi khoảng 20-30 giây cho mỗi thay đổi tôi thực hiện? có thật không?

Tôi đang nói về chế độ phát triển , tôi biết rằng trong sản xuất có bật bộ đệm và những thứ khác trang web có thể hoạt động trơn tru. Nhưng khi tôi làm việc với một vấn đề mở rộng hoặc bố cục, tôi cần phải xóa các tệp tĩnh, xóa bộ nhớ cache, v.v.

Câu hỏi của tôi là, làm thế nào tất cả các nhà phát triển M2 làm việc? bởi vì tôi không tin rằng bạn phải đợi 20-30 giây để làm mới trang ...

Môi trường của tôi: Máy tính của tôi là i5 "tốt" với RAM 8gb. Tôi cần phải làm việc với Windows vì vậy tôi sử dụng vagrant:

  • Sử dụng tất cả CPU 4 nhân
  • Sử dụng 5120 MB RAM
  • Ubuntu / Trusty64 - Ubuntu 14.04
  • Phiên bản PHP 7.0.12-1 + deb.sury.org ~ đáng tin cậy + 1
  • MariaDB - 10.1.18-MariaDB-1 ~ đáng tin cậy
  • Magento 2.1.2 chỉ được cài đặt với samplingata (không cài đặt thêm mô-đun nào)
  • (Hỏi tôi nếu bạn muốn biết thêm sth)

Điều gì đang xảy ra chính xác? Thông thường M2 trả lời ổn, chậm nhưng không sao, khoảng 5-10 giây để tải các trang, nhưng đôi khi (thông thường hơn đôi khi) nó chỉ dừng lại ở đó! đôi khi là trang đầu tiên và đôi khi là các tệp css, js, html nhưng luôn luôn là vấn đề với TTFB.

Tôi cũng thấy một vấn đề khi cài đặt trình hướng dẫn thiết lập ... với angular.js các tệp này tồn tại mãi mãi ...

2 hình ảnh này là về điều hướng bên trong trình hướng dẫn thiết lập.

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

Sau đó, một cái khác điều hướng trên danh mục frontend: http://imgur.com/oXYC52D

Tôi đang hỏi chính xác điều gì? Điều này có bình thường không? Các bạn làm việc với thời gian này? Tôi đã nhận xét điều này với một số đồng nghiệp và chúng tôi không tin, tôi phải làm việc như thế này? Đôi khi tôi tuyệt vọng chờ đợi suốt thời gian xem màn hình ...

Nếu ai đó yêu cầu tôi cho anh ta xem thử nghiệm, như tạo ra một sản phẩm mới hoặc thứ gì đó tương tự, anh ta sẽ bối rối ... Tạo một đơn hàng mới, điền vào các trường và mỗi trường thực hiện một js kéo dài trong 5-6 giây ...

Tôi không biết nhưng tôi cảm thấy rất tệ khi phát triển với thứ này ...


Haven't có cơ hội chơi với magento 2: nhưng id cho rằng hầu hết các vấn đề về hiệu suất đến từ môi trường mơ hồ của bạn. Bạn có sử dụng hộp ảo với vagrant hoặc cái gì khác. Sử dụng nhiều lõi với hộp ảo làm giảm hiệu suất. Bạn có chạy magento từ một thư mục được chia sẻ trên vagrant> magento ghi các tệp trở lại cùng một chia sẻ mà bạn gặp phải các vấn đề về hiệu suất.
Olli Tyynelä

Ngoài ra, bạn cũng có thể sắp hết bộ nhớ trên hệ thống của mình, điều này dẫn đến việc sử dụng trao đổi trên máy chủ nếu bạn đưa ra 5gigs mơ hồ. chỉ tăng số lượng nếu bạn thực sự cần nó.
Olli Tyynelä

Một phần lớn của vấn đề của bạn là bạn đang ở trên Windows. Tôi đã ở trên Windows trong nhiều năm và nó rất chậm với vagrant / magento. Điều này là do chế độ đồng bộ hóa tệp, nó không ngang với nfs. Tôi đã bắt đầu khởi động kép vào máy tính để bàn Ubuntu và các trang web magento của tôi rất nhanh, sau đó một thời gian sau tôi có một máy mac, sử dụng NFS, và nó cũng rất nhanh.
Shawn Abramson

Vâng, nó mơ hồ với hộp ảo. Tại sao sử dụng nhiều lõi phải làm giảm hiệu suất? Tôi giả sử việc cung cấp tất cả tài nguyên cho VM có thể làm chậm "máy tính của tôi" nhưng máy ảo của tôi nhanh hơn ... Và thư mục tôi đang sử dụng là / var / www (Tôi đã cố gắng không sử dụng thư mục dùng chung, đó chỉ là "linux" đang chạy hiện nay). Làm thế nào tôi có thể thấy những gì đang thất bại? Tôi có thể thực thi hàng đầu hoặc các lệnh như vậy .... nhưng không biết cách diễn giải ...
slayerbleast

@ShawnAbramson Yep ... chúng tôi đã đề xuất cài đặt boot kép chỉ để dùng thử vì như tôi đã nói, chúng tôi không tin các nhà phát triển M2 đang làm việc như tôi hiện đang làm hehe ...
slayerbleast

Câu trả lời:


8

Tôi đã thử mọi thứ và điều duy nhất nó hoạt động là máy ảo cung cấp bitnami. https://bitnami.com/stack/magento/virtual-machine

Nghiêm túc mà nói, tôi không biết những gì có vm này, nhưng đi rất nhanh. Tôi đã thử tạo VM của mình bằng cách cài đặt Ubuntu, CentOS mới, v.v. Nhưng không có máy nào hoạt động tốt như VM này.


Tôi nghĩ rằng sự khác biệt chính cho thông số kỹ thuật của VM này là memcache? Mà, trên Windows của tôi (ít nhất là trên PHP 7, là không thể)
MackieeE

6

vô hiệu hóa việc hợp nhất và thu nhỏ CSS / JS:

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

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

Cũng xem hướng dẫn này về cách cải thiện hiệu suất Magento 2.


1
Các thiết lập mặc định đã có những giá trị này. Và điều này không ảnh hưởng nhiều đến ...
slayerbleast

Vì vậy, sáp nhập sẽ hữu ích trên một máy chủ trực tuyến? Chi phí cao hơn đối với việc xử lý và không tải xuống?
Mohammed Joraid

Tại sao bạn lại vô hiệu hóa Hợp nhất và thu nhỏ CSS / JS, đó thực sự là một tùy chọn để tăng tốc độ, điều này đối với tôi giống như tự bắn vào chân mình
John

4

Tôi thấy rằng chế độ nhà phát triển vô hiệu hóa mọi thứ - đó là quá mức cần thiết. Có một số khía cạnh nhất định tôi muốn lưu trữ, chẳng hạn như dịch thuật. Rất may, env.phpbạn vẫn có thể thiết lập bộ đệm nào để sử dụng cụ thể:

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

Đây là phần trên mà tôi đã chọn để lưu trữ trong khi phát triển trên Checkout, vì đây là phần đầu rất nặng. Tôi đã chọn không lưu bộ đệm Giao diện; Khối và trang đầy đủ để xem những thay đổi của tôi.


Cảm ơn rất nhiều! Tôi gặp vấn đề này, vì tôi đã nâng cấp Magento2 lên phiên bản mới hơn và cài đặt mới. Rõ ràng nó đã ghi đè lên env.php của tôi, khiến nó chậm vô tận. Điều chỉnh này để env.php sửa nó. Cảm ơn một lần nữa!
codiga

4

Gợi ý từ Magento được đăng sau khi câu hỏi này được trả lời. Đọc các câu trả lời khác tôi nghĩ thông tin này có thể là một bổ sung hữu ích

http://devdocs.magento.com/guides/v2.2/extension-dev-guide/build/optimal-dev-en môi.html

Cấu hình tối ưu

Sau đây là danh sách các tối ưu hóa bạn có thể thực hiện trên máy phát triển cục bộ của mình

  • Magento khuyên bạn nên cài đặt và sử dụng phiên bản PHP 7 được hỗ trợ mới nhất để tăng hiệu suất.
  • Thay thế cơ sở dữ liệu MySQL của bạn bằng Percona.
  • Hãy chắc chắn rằng bạn đã cài đặt và kích hoạt PHP OPcache.
  • Xdebug được tắt theo mặc định. Chỉ kích hoạt tính năng này khi bạn cần vì nó đòi hỏi nhiều bộ nhớ và làm giảm hiệu suất. Cấu hình xdebug.max_nesting_level cần được đặt thành 200 hoặc cao hơn cho Magento. Bạn có thể tăng bộ nhớ khả dụng cho PHP để tăng hiệu năng khi bật Xdebug.
  • Nếu bạn cần dữ liệu mẫu, bạn có thể cài đặt nó bằng cách sử dụng trình soạn thảo hoặc bằng cách nhân bản kho lưu trữ.
  • Để tăng tốc độ phát triển giao diện người dùng, hãy tắt việc hợp nhất CSS và JavaScript.
  • Đảm bảo bộ nhớ đệm được bật (đây là hành vi mặc định). Nói chung, chỉ nên tắt bộ đệm trang và bộ đệm khối để phát triển và bật lại khi kiểm tra.
  • Xác thực dấu thời gian Opcache phải luôn được bật để phát triển. Không thể phát triển với opcache và xác nhận lại bởi vì bất kỳ sửa đổi PHP nào cũng sẽ yêu cầu thiết lập lại bộ đệm.

Đối với tôi Opcache đã làm điều đó. Nó tải khá nhanh bây giờ.
Amit Singh

Một điều khác tôi đã gặp là Xdebug có thể được bật theo mặc định cũng có hiệu năng. Kiểm tra /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini Sau khi thay đổi tôi nghĩ rằng bạn cần phải khởi động lại khởi động lại Docker chứa {web chứa-name}
Ian tại Xantek

1

Bật bộ nhớ cache của bạn.

Đi đến <your magento 2 directory>/binvà chạy lệnh này magento cache:enable.

Làm sạch bộ đệm khi bạn chỉnh sửa frontend để xem những gì bạn đã chỉnh sửa.

Đi đến <your magento 2 directory>/binvà chạy lệnh này magento cache:clean.

Tài liệu tham khảo của tôi

Tôi cũng mới sử dụng magento 2. Tôi hy vọng ai đó có cách làm magento 2 nhanh ngay cả khi bộ đệm bị tắt.


1
Không biết đây có phải là một giải pháp khả thi hay không ... Mọi nơi đều nói rằng hãy tắt bộ đệm trong chế độ phát triển ...
slayerbleast

6
Tất nhiên, nếu tôi kích hoạt bộ đệm, trang web sẽ hoạt động nhanh hơn ... nhưng mỗi thay đổi tôi sẽ phải xóa bộ nhớ cache ... tôi vẫn lãng phí thời gian ...
slayerbleast

1

Thiết lập của tôi trên Ubuntu 16.10 để phát triển lối vào cho các chỉnh sửa LESS :

  1. Đặt chế độ Nhà phát triển:

    php bin/magento deploy:mode:set developer

  2. Kích hoạt tất cả bộ nhớ cache:

    php bin / magento c: enable

  3. Fronted Development Workflow được thiết lập để biên dịch phía máy chủ

  4. Sau khi bất kỳ thay đổi trong ít tập tin chạy

    dọn dẹp

(Lần cuối tôi bắt đầu khởi động - xem lẩm bẩm với trình duyệt trực tiếp và tuyệt vời của nó)


0

Chỉ muốn chia sẻ trải nghiệm cá nhân của tôi, Giải pháp tôi đưa ra là cài đặt Xampp với phiên bản php 7.0 vì Magento không hoàn toàn tương thích với phiên bản cao hơn của Php. Tôi đã thử Bitnami Image được liệt kê trong câu trả lời nhưng không hoạt động như tôi mong đợi Xampp 7.0.23 Liên kết tải xuống


Có thật không? Với xampp có hoạt động tốt không? Tôi đã thử rất nhiều lần và thật kinh khủng ... Phiên bản Magento nào? Có lẽ họ đã sửa một số hiệu suất với thời gian này. Tôi sẽ thử lại. Và tại sao hình ảnh Bitnami không hoạt động như bạn mong đợi?
slayerbleast

Tôi đã thêm liên kết Magento 2.1 và Xampp 7.0 ở trên, So sánh hình ảnh Bitnami với Xampp 7.0 tôi thấy xampp dễ dàng và nhanh hơn
user3127648

0

Tăng PHP memory_limittrong tệp php.ini sẽ tạo ra sự khác biệt tốt. Tuy nhiên, nó sẽ không làm cho nó rất trơn tru (Mặc dù nó sẽ tiết kiệm thời gian).

Giá trị mặc định là 512M. Trên máy cục bộ của tôi, tôi đặt cài đặt này ở mức "-1" (không giới hạn) và nó cho thời gian tải tốt hơn.

Giá trị được đề xuất là memory_limit = 2G được đề cập ở đây .

Magento nặng và cần phần cứng hiệu năng cao như SSD để hoạt động trơn tru :(


memory_limitkhông liên quan gì đến hiệu suất. Rõ ràng từ tên của chỉ thị.
Danila Vershinin

@DanielV. Tôi cũng đã tự hỏi về điều đó nhưng sau đó tôi thấy điều này: devdocs.magento.com/guides/v2.2/install-gde/prereq/... nơi nó nói 2G là giá trị đề nghị
Binod - GoFundMonica

1
Một lần nữa, nó được khuyến khích vì lý do riêng của nó. Mà hoàn toàn không liên quan đến hiệu suất. Giới hạn bộ nhớ chỉ ở đó để không dừng hoàn toàn hệ thống của bạn trong trường hợp một số tập lệnh PHP (hoặc trong trường hợp này là các mô-đun Magento) cuối cùng ăn hết RAM của máy chủ. Hoàn toàn không có tác động hiệu suất từ ​​việc đặt giá trị quá thấp hoặc quá cao. Nó chỉ đơn giản là chỉ thị phòng ngừa để làm cho hệ thống không an toàn hơn. Và tôi ngạc nhiên khi mọi người mù quáng cho rằng việc cung cấp thêm bộ nhớ cho điều đó có nghĩa là hiệu suất đạt được thông qua chỉ thị này. Nó không và sẽ không bao giờ.
Danila Vershinin

Điểm thú vị, Daniel. Tôi đã mù quáng cho rằng thực sự. Làm thế nào chúng ta có thể chứng minh điều này? Bất kỳ con trỏ mà bạn có thể hướng dẫn tôi để tôi có thể trải nghiệm điều này?
Binod - GoFundMonica

Đặt nó quá thấp (ví dụ 16 MB, điều này chắc chắn không đủ cho M2) và PHP sẽ thất bại với lỗi nghiêm trọng. Cài đặt càng nhiều mô-đun càng tốt và đặt nó quá cao (ví dụ 4GB) và mọi thứ sẽ chạy ổn cho đến khi bạn có thêm vài khách truy cập trang web, điều này chắc chắn sẽ khiến máy chủ của bạn đạt đến trạng thái Out of Memory. Bạn không cần những thí nghiệm này nếu bạn chỉ đọc tài liệu cho chỉ thị đó. PHP chạy trong bộ nhớ mọi lúc. Nó không trao đổi vào đĩa hoặc làm những điều buồn cười như thế.
Danila Vershinin

0

Nếu bạn gặp vấn đề khi thiết lập trên hộp Vagrant, gần như chắc chắn đó sẽ là cách các thư mục của bạn được chia sẻ. Chúng nên được chia sẻ qua NFS.

Sau khi loay hoay với rất nhiều hộp khác nhau, tôi nhận ra rằng mặc dù tôi đã đặt NFS trong cấu hình, nhưng nó không thực sự hoạt động và hệ thống chia sẻ VirtualBox tiêu chuẩn đang tiếp quản.

Tôi đã quay lại những điều cơ bản và thiết lập một hộp LEMP đơn giản và cài đặt plugin này:

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

Xác nhận NFS đã hoạt động và tất cả đều tốt.


0

Những thứ có thể giúp thiết lập Magento 2 của bạn nhanh chóng trên máy chủ cục bộ hoặc nói chung trên bất kỳ môi trường máy chủ nào.

  1. Giảm thiểu JS và CSS
  2. Sử dụng một ứng dụng bộ nhớ đệm như Redis hoặc Memcached.
  3. Kích hoạt tất cả các bộ đệm như block_html, layout, page_cache, v.v. do Magento 2 cung cấp.
  4. Hợp nhất CSS và JS
  5. Cho phép các sản phẩm và danh mục phẳng.

Bây giờ, khi trên môi trường phát triển, chỉ xóa bộ đệm cần thiết thay vì xóa toàn bộ bộ đệm để ngăn chặn việc xây dựng lại toàn bộ bộ đệm.


0

Lý do chính khiến magento2 chậm trong chế độ nhà phát triển có liên quan đến hàng ngàn tệp tĩnh và được biên dịch được tạo khi đang di chuyển.

Có 3 giải pháp cho việc này:

  • Gắn kết toàn bộ thư mục với NFS (SSD vẫn là bắt buộc).

  • Chỉ thư mục ứng dụng (bất kỳ phần cứng nào của bạn cũng sẽ hoạt động tốt) nhưng bạn mất quyền truy cập vào thư mục / nhà cung cấp trên máy chủ của mình.

  • Gắn kết toàn bộ dự án với rsync và loại trừ các thư mục nơi các tệp được tạo (pub / static, created / code, v.v.).

Tôi đã thực hiện công việc đó, hãy dùng thử: https://github.com/zepgram/magento2-fast-vm/

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.