마 젠토가 왜 이렇게 느린가요? [닫은]


138

마 젠토는 보통 너무 느려요?

이것은 나의 첫 경험이며 관리자 패널은 변경 사항을로드하고 저장하는 데 오랜 시간이 걸립니다. 테스트 데이터가있는 기본 설치입니다.

호스팅되는 서버는 다른 비마 젠토 사이트를 초고속으로 제공합니다. Magento가 사용하는 PHP 코드가 너무 느려서 고칠 수있는 방법은 무엇입니까?


12
어떤 하드웨어를 사용하고 있습니까? Magento는 내 경험에 심각한 하드웨어 백업이 필요합니다.
지터

3
지원을 요청하는 것이 아니라 코드입니다. 내 희망은 누군가 과거에 이것을 경험하고 코드가 이러한 느린 동작을 피하도록 최적화되었다는 것입니다. 전체 사이트에 적용 할 수있는 특정 코드 스 니펫이 없습니다. 나는 그 문제를 더 자세히 조사해야 할 것이다.
mr-euro

18
Magento에는 6000 개 이상의 클래스 파일이 있으며 가정용이 아닌 회 사용으로 제작되었습니다. APC가 없으면 설치에 대해 생각하지 마십시오. 작은 상점에는 권장하지 않습니다.
Elzo Valugi

1
귀하의 깃발과 관련하여 @Jonesome :이 질문은 매우 광범위하며 아마도이 시점에서 다소 날짜가 있습니다. 즉, 이제 Magento 문제 전용 사이트 ( Magento )가 있으며 설정을 최적화하려는 모든 사람에게 유용한 리소스가 될 것입니다.
Shog9

1
@ Shog9 저는 magento의 애드온을 개발하고 지원하는 팀을 관리합니다. 이 정확한 문제는 거의 매일 발생한다고 말할 수 있습니다. 마 젠토는 "매우"리소스 집약적이라는 점에서 "정상적인"램프 앱이 아닙니다. 이 스레드는 중요합니다. 그것을 닫으면 SO 에서이 일반적인 대화가 강제로 해제되어 모든 사람에게 불행합니다.
Jonesome Reinstate Monica

답변:


184

필자는 성능을 위해 마 젠토를 최적화하는 데만 관여했지만 시스템이 느린 이유는 다음과 같습니다.

  1. Magento의 일부는 MySQL 위에 구현 된 EAV 데이터베이스 시스템을 사용합니다. 이는 하나의 "사물"을 쿼리하는 것은 종종 여러 행을 쿼리하는 것을 의미합니다.

  2. 메모리에 거대한 XML 트리를 구축 한 다음 같은 트리를 "쿼리"하여 정보를 얻기 위해 많은 것들 (애플리케이션 구성, 시스템 구성, 레이아웃 구성 등)이 있습니다. 메모리 (트리 저장)와 CPU (트리 구문 분석)가 모두 필요합니다. 이 중 일부 (특히 레이아웃 트리)는 엄청납니다. 또한 캐싱이 설정되어 있지 않으면 디스크의 파일각 요청 에서이 트리가 작성됩니다 .

  3. Magento는 구성 시스템을 사용하여 클래스를 재정의 할 수 있습니다. 이것은 강력한 기능이지만, 모델, 도우미 또는 컨트롤러가 인스턴스화 될 때마다 원래 클래스 파일 또는 재정의 클래스 파일이 필요한지 확인하기 위해 추가 PHP 명령을 실행해야합니다. 이것은 더해진다.

  4. 레이아웃 시스템 외에도 Magento의 템플릿 시스템에는 많은 재귀 렌더링이 포함됩니다. 이것은 더해진다.

일반적으로 Magento 엔지니어는 가장 유연하고 사용자 정의 가능한 시스템을 구축하고 나중에 성능에 대해 걱정해야합니다.

성능 향상을 위해 가장 먼저 할 수있는 것은 캐싱을 켜는 것입니다 (시스템-> 캐시 관리). 이렇게하면 Magento가 다양한 XML 트리를 구축하는 동안 발생하는 일부 CPU / 디스크 차단이 완화됩니다.

두 번째로해야 할 일은 호스트 및 운영 팀 이 Magento 성능 조정 경험을 갖도록하는 것 입니다. 당신이 $ 7 / month 계획에 의존하고 있다면, 행운을 빕니다.


10
광범위한 설명에 감사드립니다. Magento는 유연성을 제공하면서도 매우 강력합니다. 처음에는 잘못 작성된 SQL로 인해 DB 쓰기가 중단되었다고 생각했지만 처음에는 예상보다 많은 작업이 진행되고 있음을 알았습니다. 참고로, 상점 소유자가 제품을 추가하여 캐싱을 사용할 수 없습니다. 캐시가 켜졌을 때 그는 상점이 설치되는 동안 캐싱을 비활성화하도록 강요하지 않는 제품에 대해 불평했습니다. 전용 서버에서 호스팅되고 있지만 Magento를 전용 상자로 옮겨야 할 것 같습니다.
mr-euro

4
XHProf로 얼마 전에 프로파일했습니다. XML 파싱에는 많은 시간이 걸렸습니다.이 목록을 잘 알고 계신 것 같습니다.
Morgan Tocker

1
HHVM에서 Magento를 실행하면 이것이 더 나아질 지 궁금합니다. 마지막으로 HHVM이 Magento를 지원하지 않는지 확인했지만 완료되면 도움이 되겠습니까?
Bharadwaj Srigiriraju

1
이것은 많은 것을 설명합니다. 아는 것은 반 전투입니다. 이것이 어떻게 건설적인 것으로 간주 될 수 없는지 모르겠습니다.
flcoder

composer를 사용하는 경우 composer의 자동 로더 파일 (magento 성능 지침 참조)을 최적화하고 Magento2의 경우 프로덕션 모드를 켜는 것을 잊지 마십시오! 응용 프로그램에 전체 페이지 캐시에 문제가없는 경우 광택은 매우 좋은 방법입니다.
Dmitri Sologoubenko

54

캐싱에 대한 Alan Storm의 권장 사항 외에도 캐싱과 관련하여 특히 두 가지 권장 사항이 있습니다.

-캐싱이 디스크가 아닌 memcached에 있는지 확인하십시오.

나는 두 개의 magento 설치를 돌 보았고 일단 시스템에 어떤 종류의 부하가 생기면 memcached가 훨씬 빨리 작동하기 시작합니다. 그리고 죽은 사람은 그것을 바꾸기 쉽습니다 (적어도 다른 마 젠토 일을하는 것과 관련이 있습니다!)

좋은 출발점이 여기에 있습니다 : http://www.magentocommerce.com/boards/viewthread/12998/P30/- 만약 당신이 전에 memcached를 전혀 사용하지 않았다면, 그것에 대한 일반적인 정보를 볼 가치가 있습니다.

-템플릿 / 뷰 캐싱을 활성화합니다.

이것은 좋은 기사입니다 : http://inchoo.net/ecommerce/magento/magento-block-caching/

마 젠토 사이트에도 좋은 것들이 있지만 (Google magento 블록 캐싱), 현재 다운되었습니다.

블록 캐싱에 내 2 센트를 추가하려면 / app / code / local에 자체 블록을 만들고 코어 블록을 확장하고 캐시 매개 변수를 정의하고 이름을 xxx_Cache로 지정한 다음 대신이 블록을 사용하도록 레이아웃을 업데이트하는 것이 좋습니다. 핵심의. 이렇게하면 magento를 업그레이드 할 때 변경 사항이 손실되거나 시스템이 손상되지 않습니다.


3
포인트에 대한 Thx. 이전에는 프로덕션에서 사용하지 않은 memcached를 살펴볼 것입니다. 블록을 복제하는 것도 좋습니다.
mr-euro

3
benlumbey가 말한 두 번째로, 나는 windows server를 실행할 때 memcached를 사용하지 않지만 / var 디렉토리를 솔리드 스테이트 드라이브에 저장하면 큰 차이가 있습니다.
Rick J

@rickj-예, ./var 폴더를 더 빨리 만드는 것은 확실히 도움이됩니다. memcached 전에 tmpfs를 사용해 보았으며 그로부터 상당한 부스트를 얻었습니다.
benlumley

다중 노드 환경에서 memcached보다 오버 헤드가 적기 때문에 단일 노드에 대해서만 apc 캐시를 사용하려고합니다.
sbditto85

2
예-맞습니다. 그러나 PHP를 실행하는 방법에 따라 일부 PHP 프로세스마다 별도의 APC 캐시가 생길 수 있습니다. 이는 모든 X 요청마다 PHP 프로세스를 순환시키는 경우 훨씬 덜 적합합니다.
benlumley

23

아직 보지 못했다면 Magento와 Rackspace가 팀을 이루어 Magento 성능 조정에 대한 백서를 작성했습니다. 훌륭합니다. https://support.rackspace.com/whitepapers/building-secure-scalable-and-highly-available-magento-stores-powered-by-rackspace-solutions/

--- 편집하다 ---

새로 제공되는 또 다른 훌륭한 자료 (2011 년 10 월)는 다음과 같습니다. http://www.sessiondigital.com/assets/Uploads/Mag-Perf-WP-final.pdf

(이것에 Alan Storm 때문에 감사합니다.)


업데이트 주셔서 감사합니다, 나중에 자세히 읽을 것입니다.
mr-euro

2
두 번째 링크는 이제 죽었습니다.
Laizer

1
첫 번째 링크도 죽었습니다.
Edward

링크가 끊어졌습니다. Ner
Ner

1
Rackspace 백서에 대한 직접 링크 (링크 # 1).
Levi Figueira

17

관리자 인터페이스가 매우 느린 이유는 분명하지 않습니다. Magento에는 Mage_AdminNotification이라는 모듈이 있습니다. 그 내선을 비활성화하십시오. 그것이하는 일은 새로운 업데이트 메시지에 대해 magentocommerce.com을 쿼리하기 때문입니다. 서버 속도가 느리면 네트워크 지연 및 외부 뉴스로드로 인해 관리 페이지가 대기하고 속도가 느려집니다. 방화벽을 통해 나가는 서버 연결을 보호 한 경우 관리 인터페이스가 magentocommerce.com에 도달 할 수 없을 때 제한 시간 동안 대기하기 때문에 훨씬 더 실망 스러울 수 있습니다.

비활성화하려면 시스템-> 구성으로 이동하여 맨 아래로 스크롤하여 고급 섹션에서 고급을 누르십시오. 이제 비활성화 Mage_AdminNotification하고 저장하십시오!


4
이로 인해 로컬 개발 환경에서 성능이 크게 달라졌으며 매우 빠른 개발 박스에서 느리게 실행되는 것을 항상 실망 시켰습니다. 감사합니다!
random_user_name

Magento2에서 : Stores-> Configuration-> Advanced-> Advanced에서 비활성화하십시오 Mage_AdminNotification.
Scott C Wilson

6

마 젠토에 대한 피상적 인 경험 만 가지고 있습니다. 공유 그리드 서버에 설치했으며 페이지 로딩이 ~ 5 + 초였습니다. 한마디로 CMS 사이트 전용 서버에 최적화 된 서버에 설치했는데 매우 빠릅니다.

내 전용 호스팅에는 ~ 10 Joomla가있었습니다! 사이트 및 VBullitin 사이트가 실행 중입니다.

내 생각 엔 공유 호스팅에서 성능이 떨어지지 않을 것입니다. 초과 가입은 Magento가 원하는만큼 실행하기에 충분한 리소스를 허용하지 않습니다.


6

회사의 관리 서버 최적화에 더 관여하고 있지만 몇 가지 팁이있을 수 있습니다. 먼저 Zend 서버의 코드 추적 기능을 사용하여 코드를보다 자세히 살펴볼 수 있습니다. 언제 어디서 더러워 지는지 확인할 수 있습니다.

캐시와 관련하여 벤룸 리의 고려 사항을 전적으로 공유합니다. 우리가 호스팅하는 대부분의 사이트에는 블록 캐싱이 가능하지 않습니다. 이 캐시는 명시 적으로 호출되어야하며 "가정"되지 않아야합니다. 따라서 코드가 아직이 메커니즘에 참여하지 않았다면 시도해보아야 할 것입니다. EE 버전이 있다면, 최고의 짐승을 얻기 위해 전체 페이지를 얻을 수 있습니다.

리버스 프록시도 많은 도움이 될 것입니다. 정적 리소스를 캐시하여 프론트 서버의 PHP 해석 스택에 대한 부담을 크게 줄입니다.

세션 및 Magento 캐시를 RAM 디스크에 쓰는 것을 잊지 마십시오. 이것은 또한 당신에게 또 다른 수준의 공연을 제공 할 것입니다.

여기에는 여전히 많은 이야기가 있지만 시간이 부족합니다. 1.4.1 CE 버전으로 잘 코딩 된 2x5650 Xeon + 16GB RAM 서버에서 실행되고 Rproxy가 맨 위에있는 우수한 사이트는 하루에 최대 55,000 명의 순 방문자가 모든 사람에게 매끄러운 페이지를 가질 수 있음을 알아야합니다. .


5

Apache에서 LiteSpeed로 전환하면 많은 도움이되었습니다. 또한 : MySQL 설정 편집, Fooman Speedster (js 및 css 파일 압축 / 결합 모듈) 설치 및 APC 설치. Magento는 또한 Enterprise Edition에서 최고의 성능을 얻는 방법에 대한 백서를 게시했지만 다른 버전에도 동일하게 적용됩니다. http://www.magentocommerce.com/whitepaper/


4

Magento 쇼핑 카트가 느리게 실행될 수있는 데는 여러 가지 이유가 있지만 문제를 제기하고 꽤 빨리 처리 할 수있는 다양한 방법이 있습니다. htaccess 파일을 수정하여 Gzip을 활성화하는 것이 시작입니다. fooman speedster 확장을 설치할 수도 있습니다. 사용되는 서버 유형에 따라 상점의 속도가 결정됩니다. 더 많은 팁과 더 나은 설명은 여기 http://www.interactone.com/how-to-speed-up-magento/


4

처음 설치했을 때 페이지를로드하는 데 30 초가 걸렸습니다. 램이나 프로세서에서 내 서버가 최대치가되지 않아서 어떻게해야할지 몰랐습니다. Firebug의 넷 패널을 보면 페이지 당 약 100 개의 파일이로드되고 있으며 각 파일을 연결하는 데 오랜 시간이 걸렸습니다. fooaccess speedster와 ght를 htaccess에 설치 한 후로드 시간은 서버의 다른 쇼핑 카트에서와 같이 3 초로 줄었습니다.


3

데이터베이스 디자인이 좋지 않아 Magento가 매우 느립니다. 코드는 혼란스럽고 업데이트 및 최적화하기가 매우 어렵습니다. 따라서 모든 최적화는 코드 대신 캐시를 통해 수행됩니다.

반면에. 많은 도구가있는 웹숍입니다. 따라서 유연한 웹숍이 필요하면 매우 강력한 서버를 구입하면 괜찮을 것입니다.


1
데이터베이스 디자인은 실제로 매우 우수하고 유연합니다.
Black

3

또한 기능 대 성능으로 이어질 것입니다.

원시 성능은 nginx, php-fpm, memcached, apc 및 적절한 설계된 서버를 사용하여 얻을 수 있습니다.

플레 스크 및 마 젠토 성능과 같은 기능은 마 젠토 성능 클라우드를 설계 할 때 전체 인프라를 관점에서 고려하여 관리 할 수 ​​있습니다.

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