SOAP 호출의 성능 향상


13

Magento 2.1의 성능 문제가 있습니다

내 가게에는 90.000 개의 제품이 있습니다. 나는이 제품들을 비누에 첨가했다. 내가 이것을 할 때 각 기사 (제품?) (요청> 응답)에 약 7 초가 걸렸습니다. 요약하면 모든 제품을 초기화하는 데 며칠이 걸렸습니다.

이제 모든 제품이 상점에 있습니다. 몇 주 동안 나는 기사 (제품)에 관한 것들을 업데이트해야합니다. 비누로 이것을 다시 할 때도 같은 시간이 걸립니다. 업데이트 할 때 상점을 사용할 수 없습니다. 요청 및 응답의 예는 다음과 같습니다. https://pastebin.com/aqnMJk98 https://pastebin.com/UAh0h8Zz

내 서버에는 12 코어 CPU, 24GB RAM 및 SSD가 있습니다. Apache2 PHP7-fpm 및 MYSQL과 함께 Ubuntu 16.04를 실행 중입니다.

업데이트 프로세스를 볼 때 MySQL의 5 코어는 100 % PHP가 약간 작동하고 나머지는 유휴 상태입니다. 램은 소량 만 사용하여 iotopSSD가 지루하다고 말합니다.

데이터베이스 성능을보고 Magento가 데이터베이스에 수천 개의 명령을 추가하는 과정에서 실행되는 것을 보았습니다. 이거 괜찮아?

Magento CSV 가져 오기로 업데이트하면 훨씬 빠릅니다.

이 Magento2의 속도를 높이려면 어떻게해야합니까? 이 상황에서는이 가게와 잘 어울리지 않습니다.


어떤 확장을 사용하고 있습니까? 문제는 확장 프로그램 중 하나와 관련이있을 수 있습니다.
Bunyamin Inan

@tadeus 지난 2 년 동안 속도 문제를 해결 했습니까? 그렇지 않은 경우, 면책 조항 : 나는 성능 및 기타 분석 서비스를 향상시키기 위해 무료 유틸리티 스크립트가있는 내 프로필, 네트워크 프로필에 언급 된 웹 사이트의 콘텐츠 작성자입니다.
Wilson Hauck

답변:


1

대량 수입

핵심은 자신이 언급 한 것처럼 일괄 가져 오기를 사용하는 것입니다.

Magento CSV 가져 오기로 업데이트하면 훨씬 빠릅니다.

SOAP API를 다시 생각하고이를 벌크 모드로 변경하십시오. 예를 들어 제품 데이터를 받아 들일 미들웨어를 작성하고 나중에 Magento에 제공 할 수있는 csv 파일을 생성 할 수 있습니다.

이를 지원하는 타사의 확장 기능이 있습니다.

일반적인 성능 조언

Magento 자체의 속도를 높일 수는 있지만 각 개선 사항에서 ~ 1-10 % 향상을 얻을 수 있습니다. 여러 가지를 수행하면 이점이 배가됩니다.

  1. 비효율적 인 코드가 없는지 확인하십시오
    1. 코드가 통지 / 오류 / 경고를 생성하지 않는지 확인하십시오
    2. 설치된 확장 프로그램 (타사 또는 본인)에 비싼 이벤트 리스너가 없는지 확인하십시오.
  2. 알림 및 경고 제거가 완료되면 로깅 비활성화를 고려하십시오.
  3. 사용하지 않는 Magento 및 타사 확장 프로그램을 확인하고 비활성화 할 수 있음 Magento 2에서 어떤 모듈을 비활성화 할 수 있습니까?를 참조하십시오 . 참고로.
  4. 데이터베이스 서버가 Magento 응용 프로그램과 동일한 시스템에있는 경우 TCP / IP 연결 대신 Linux 소켓을 사용하고 있는지 확인하십시오.
  5. 데이터베이스 서버가 Magento 응용 프로그램과 동일한 컴퓨터에 있지 않은 경우 PHP는 데이터베이스를 쿼리 할 때마다 DNS 확인을 수행하지 않아도됩니다.
  6. 데이터베이스 성능 조정 조언을 확인하십시오 .percona 기사는 이미 답변 중 하나에 언급되어 있습니다.
  7. 마 젠토 인덱싱 모드를 확인하고 스케줄에 따라 인덱싱으로 전환 한 후 매일 밤 또는 수입이 완료된 후 제품 저장이 아닌 재 인덱싱을 수행하십시오. https://devdocs.magento.com/guides/v2.2/extension-dev-guide/indexing.html#m2devgde-indexing-modes

위의 모든 작업이 완료되고 더 많은 성능이 필요한 경우 :

  • xDebug 또는 blackfire로 응용 프로그램을 프로파일 링하고 병목이 어디에 있는지 확인하고 제거하십시오.
  • 주변에서 물어 보지만 더 구체적으로 말하면 현재 개선하려는 것이 무엇인지 설명하십시오.
  • 도움을 받으려면 Magento 파트너 또는 인증 된 Magento 개발자에게 문의하십시오.

0

여기서 문제는 SOAP 호출이 매우 비싸다는 것입니다. 제품을 추가 / 편집 / 삭제하기 위해 SOAP 요청을 시작하면 Magento는 필요한 모든 정보를 얻기 위해 많은 테이블을 조인해야합니다. PHP 자체와 함께이 동작을 수행하면 처리하려는 제품 또는 데이터 수가 느려집니다.

Magento 자체는 트래픽을 처리하기 위해 5 노드 서버 클러스터 (1 x DB, 4 x 웹 서버)를 권장합니다.

AWS와 같이 수평 적으로 확장하는 것이 좋습니다. 이것은 귀하의 비즈니스에 더 큰 영향을 줄 수 있지만 IMHO는 더 나은 성과를 위해 Magento를 조정할 수 없습니다.

AWS 내에서 시작하는 서버 수를 담당하는 자동 확장 그룹 기능을 사용해야합니다. 데이터를 추가 할 때마다 압력을 처리하기 위해 새 서버가 시작됩니다. AWS RDS (DB 서비스)에서도 매우 쉽고 빠르게 수행 할 수 있습니다.

AWS가 옵션이 아닌 경우 Magento 및 PHP를 조정할 수 있습니다. 다음 설정을 확인하는 것이 좋습니다.


0

이 링크는 MySQL 메모리 사용량을 조정하는 방법을 설명합니다. RAM이 너무 많기 때문에 MySQL에 더 많은 것을 할당하면 도움이 될 수 있습니다. 이는 전용 데이터베이스 서버를 구축하는 쉽고 비용이 덜 드는 ($) 솔루션 일 수 있습니다.

https://www.percona.com/blog/2016/05/03/best-practices-for-configuring-optimal-mysql-memory-usage/

또한 MySQL Workbench 유틸리티는 이러한 일반적인 조정 및 모니터링에 도움이되는 유용한 정보를 제공합니다. 이 유틸리티는 Oracle / MySQL에서 작성합니다. 임의의 쉐어웨어 앱이 아닙니다.

https://dev.mysql.com/downloads/workbench/

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