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

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

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

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



답변

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

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

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

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

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

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

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

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


답변

캐싱에 대한 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를 업그레이드 할 때 변경 사항이 손실되거나 시스템이 손상되지 않습니다.


답변

아직 보지 못했다면 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 때문에 감사합니다.)


답변

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

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


답변

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

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

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


답변

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

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

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

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

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


답변

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