로컬 호스트 개발에서 Magento2가 너무 느리게 실행


25

최근에 magento2에서 새로운 확장 기능 또는 사용자 정의를 개발하기 시작했으며 첫 인상은 악몽이었습니다. 내가 변경할 때마다 20-30 초 정도 기다려야합니까? 정말?

개발 모드에 대해 이야기 하고 있습니다. 캐시가 활성화 된 프로덕션 및 기타 웹 사이트가 매끄 럽습니다. 그러나 확장 또는 레이아웃 문제로 작업 할 때 정적 파일을 제거하고 캐시를 지우는 등의 작업이 필요합니다.

제 질문은 모든 M2 개발자가 어떻게 일하는 것입니까? 페이지를 새로 고치기 위해 20 대 30 대를 기다려야한다고 믿지 않기 때문에 ...

내 환경 : 내 PC는 8GB RAM이있는 "좋은"i5입니다. 나는 vagrant를 사용하기 위해 Windows로 작업해야합니다.

  • 4 코어 CPU 모두 사용
  • 5120MB의 RAM 사용
  • 우분투 / trusty64-우분투 14.04
  • PHP 버전 7.0.12-1 + deb.sury.org ~ trusty + 1
  • MariaDB-10.1.18-MariaDB-1 ~ 신뢰
  • Magento 2.1.2는 sampledata로만 설치됩니다 (더 이상 모듈이 설치되지 않음)
  • (sth를 더 알고 싶다면 저에게 물어보세요)

정확히 무슨 일이야? 일반적으로 M2는 페이지를로드하기 위해 약 5-10 초 정도 괜찮고 느리지 만 괜찮습니다. 그러나 때로는 (보다 일반적으로) 영원히 멈추는 경우가 있습니다! 때로는 첫 페이지이고 때로는 css, js, html 파일이지만 항상 문제는 TTFB에 있습니다.

angular.js를 사용하면 이러한 파일이 영구적으로 지속됩니다 ...

이 두 사진은 설정 마법사 내부 탐색에 관한 것입니다.

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

그런 다음 프론트 엔드 카탈로그에서 탐색하는 다른 하나 : http://imgur.com/oXYC52D

내가 정확히 무엇을 묻고 있습니까? 이것이 정상입니까? 너희들은이 타이밍으로 일해? 나는 이것을 동료들과 함께 언급했으며 우리는 믿지 않는다. 나는 이렇게 일해야합니까? 때로는 화면을 보면서 항상 기다리는 것에 절망합니다 ...

누군가가 나에게 새로운 제품을 만드는 것과 같은 테스트를 보여달라고 요청하면 그냥 놀라게됩니다 ... 새 주문을 작성하고 필드를 채우고 모든 필드를 채우면 5-6 초 동안 지속되는 js가 실행됩니다 ...

잘 모르겠지만이 물건으로 개발하는 것이 너무 나쁘다 ...


magento 2와 함께 플레이 할 기회는 없었지만 id는 대부분의 성능 문제가 당신의 방랑 환경에서 비롯된 것으로 가정합니다. vagrant 또는 다른 것과 함께 virtualbox를 사용합니까? virtualbox에 여러 코어를 사용하면 성능이 저하됩니다. vagrant> magento의 공유 폴더에서 magento를 실행하면 성능 문제가 발생하는 동일한 공유에 파일을 다시 씁니다.
Olli Tyynelä

또한 방랑자에게 5 기가를 줄 경우 호스트에서 스왑을 사용하게하는 시스템의 메모리가 부족할 수 있습니다. 실제로 필요한 경우에만 금액을 늘리십시오.
Olli Tyynelä

문제의 큰 부분은 Windows에 있다는 것입니다. 나는 몇 년 동안 Windows에 있었고 vagrant / magento로 매우 느 렸습니다. 이는 파일 동기화 모드로 인해 nfs와 동일하지 않습니다. 우분투 데스크탑으로 듀얼 부팅을 시작했는데 magento 사이트가 매우 빠르다가 잠시 후 NFS를 사용하는 Mac을 얻었고 매우 빠릅니다.
Shawn Abramson

예, virtualbox와 함께 방랑합니다. 더 많은 코어를 사용하면 성능이 저하되는 이유는 무엇입니까? VM에 모든 리소스를 제공하는 것이 "내 PC"속도는 느리지 만 VM 속도는 더 빠를 수 있다고 가정합니다. 그리고 사용중인 폴더는 / var / www입니다 (공유 폴더를 사용하지 않으려 고했으나 실행중인 것은 "linux"뿐입니다) 지금). 무엇이 잘못되었는지 어떻게 알 수 있습니까? top 또는 이와 같은 명령을 실행할 수 있지만 해석 방법을 모릅니다 ...
slayerbleast

@ShawnAbramson Yep ... 우리는 M2 개발자들이 현재 자신과 같은 방식으로 작업하고 있다고 생각하지 않기 때문에 듀얼 부트를 설치하는 것이 좋습니다.
slayerbleast

답변:


8

나는 모든 것을 시도했고 그것이 작동하는 유일한 것은 bitnami를 제공하는 가상 머신입니다. https://bitnami.com/stack/magento/virtual-machine

진지하게, 나는이 VM이 무엇인지 모르지만 정말로 빠릅니다. Ubuntu, CentOS 등을 새로 설치하여 VM을 만들려고했지만이 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

또한 Magento 2 성능을 향상시키는 방법에 대한 이 안내서 를 참조하십시오 .


1
기본 설정에는 이미이 값이 있습니다. 그리고 이것은 큰 영향을 미치지 않습니다 ...
슬레이어 블라스트

온라인 서버에서 병합이 유용할까요? 처리 및 다운로드가 아닌 추가 오버 헤드?
Mohammed Joraid

왜 사용하지 CSS / JS의 병합 및 파일 축소 것, 그것은 옵션이 속도를 높이기 위해 문자 그대로있다,이 발에 자신을 촬영처럼 날 것으로 보인다

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는 기본적으로 꺼져 있습니다. 이 기능은 많은 메모리가 필요하고 성능이 저하되므로 필요할 때만 사용하십시오. Magento의 경우 xdebug.max_nesting_level 구성을 200 이상으로 설정해야합니다. Xdebug를 켜면 PHP에서 사용 가능한 메모리를 늘려 성능을 향상시킬 수 있습니다.
  • 샘플 데이터가 필요한 경우 composer를 사용하거나 리포지토리를 복제하여 설치할 수 있습니다.
  • 프런트 엔드 개발 속도를 높이려면 CSS와 JavaScript의 병합을 해제하십시오.
  • 캐싱이 켜져 있는지 확인하십시오 (기본 동작). 일반적으로 개발시 페이지 캐시 및 블록 캐시 만 끄고 테스트시 다시 켜야합니다.
  • 개발을 위해서는 Opcache 타임 스탬프 유효성 검사가 항상 켜져 있어야합니다. 모든 PHP 수정에는 캐시 재설정이 필요하므로 opcache를 켜고 유효성을 다시 끄면 개발이 불가능합니다.

나를 위해 Opcache가 트릭을 수행했습니다. 지금 꽤 빨리로드 중입니다.
Amit Singh

내가 만난 또 다른 것은 성능 저하가있는 Xdebug가 기본적으로 활성화 될 수 있다는 것입니다. 확인 /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini 변경 후 컨테이너 도커를 다시 시작해야한다고 생각합니다 {web-container-name}
Ian at Xantek

1

캐시를 켜십시오.

<your magento 2 directory>/bin이 명령으로 이동하여 실행하십시오 magento cache:enable.

프런트 엔드를 편집 할 때 캐시를 정리하여 편집 한 내용을 확인하십시오.

<your magento 2 directory>/bin이 명령으로 이동하여 실행하십시오 magento cache:clean.

내 참조

나는 magento 2도 처음입니다. 캐시가 비활성화 된 경우에도 누군가가 magento 2를 빠르게 만들 수 있기를 바랍니다.


1
이것이 가능한 솔루션인지 모릅니다 ... 개발 모드에서 캐시를 비활성화하는 모든 곳에서 ...
slayerbleast

6
물론 캐시를 활성화하면 사이트가 더 빨라질 것입니다. 그러나 모든 변경 사항은 캐시를 정리해야합니다 ... 여전히 생각할 시간 낭비입니다.
slayerbleast

1

LESS 편집을 위한 프론트 엔드 개발을 위한 Ubuntu 16.10의 설정 :

  1. 개발자 모드 설정 :

    php bin/magento deploy:mode:set developer

  2. 모든 캐시를 활성화하십시오.

    PHP bin / magento c : 사용

  3. 서버 측 컴파일로 설정된 개발 된 워크 플로우

  4. 적은 수의 파일을 변경 한 후 실행

    지저분한 청소

(내가 시작하기 위해 마지막으로-라이브 브라우징 및 그레이트와 함께 거친 시계)


0

내 개인적인 경험을 공유하고 싶었습니다 .Magento가 PHP의 상위 버전과 완전히 호환되지 않기 때문에 Xampp를 PHP 버전 7.0으로 설치하는 것이 해결책이었습니다. 답변에 나열된 Bitnami Image를 사용해 보았지만 Xampp 7.0.23 다운로드 링크 가 예상대로 작동하지 않습니다.


정말? xampp와 함께 잘 작동합니까? 나는 여러 번 시도했고 끔찍했다 ... 무슨 마 젠토 버전? 아마도 이번에는 성능을 약간 수정했을 것입니다. 다시 시도하겠습니다. 왜 Bitnami Image가 예상대로 작동하지 않습니까?
slayerbleast

나는 젠토 2.1 XAMPP는 7.0 링크 내가 쉽고 빠르게 XAMPP을 발견 XAMPP 7.0 Bitnami 이미지를 비교, 위에서 추가 한
user3127648

0

memory_limitphp.ini 파일에서 PHP 를 늘리면 큰 차이가 있습니다. 그러나 매우 매끄럽지는 않습니다 (시간을 절약 할 수는 있지만).

기본값은 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를 설정했지만 실제로 작동하지 않고 표준 VirtualBox 공유 시스템이 대신한다는 것을 깨달았습니다.

기본으로 돌아가 간단한 LEMP 상자를 설정 하고이 플러그인을 설치했습니다.

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

NFS가 작동하고 있으며 모든 것이 정상임을 확인했습니다.


0

로컬 서버 또는 일반적으로 모든 서버 환경에서 Magento 2 설정을 빠르게 할 수있는 것.

  1. JS 및 CSS 축소
  2. Redis 또는 Memcached와 같은 캐싱 응용 프로그램을 사용하십시오.
  3. Magento 2에서 제공하는 block_html, 레이아웃, page_cache 등과 같은 모든 캐시를 활성화하십시오.
  4. CSS와 JS 병합
  5. 플랫 제품 및 카테고리를 사용하십시오.

이제 개발 환경에있을 때 전체 캐시를 플러시하는 대신 필요한 캐시 만 플러시하여 전체 캐시 재 구축을 방지합니다.


0

개발자 모드에서 magento2가 느린 주된 이유는 즉시 생성되는 수천 개의 정적 및 컴파일 된 파일과 관련이 있습니다.

이에 대한 3 가지 해결책이 있습니다.

  • NFS로 전체 디렉토리를 마운트하십시오 (SSD는 여전히 필수입니다).

  • 응용 프로그램 디렉토리 만 마운트하면 (하드웨어가 제대로 작동하더라도) 호스트 시스템의 / vendor 디렉토리에 액세스 할 수 없습니다.

  • rsync로 전체 프로젝트를 마운트하고 파일이 생성되는 디렉토리 (pub / static, generated / code 등)를 제외하십시오.

나는 그 일을했고, 시도해보십시오 : https://github.com/zepgram/magento2-fast-vm/

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.