ปรับปรุงประสิทธิภาพการโทร SOAP


13

ฉันมีปัญหาด้านประสิทธิภาพของ Magento 2.1

ในร้านของฉันฉันมีสินค้า 90.000 ฉันเพิ่มผลิตภัณฑ์เหล่านี้ลงในสบู่ เมื่อฉันทำสิ่งนี้มันใช้เวลาประมาณ 7 วินาทีสำหรับแต่ละบทความ (ผลิตภัณฑ์?) (คำขอ> ตอบกลับ) โดยสรุปใช้เวลาไม่กี่วันในการเริ่มต้นผลิตภัณฑ์ทั้งหมด

ตอนนี้ผลิตภัณฑ์ทั้งหมดอยู่ในร้าน ตลอดสองสามสัปดาห์ที่ผ่านมาฉันต้องอัปเดตบางสิ่งในบทความ (ผลิตภัณฑ์) เมื่อฉันทำสิ่งนี้ด้วยสบู่อีกครั้งมันต้องใช้ระยะเวลาเท่ากัน เมื่อฉันอัปเดตร้านค้าไม่สามารถใช้งานได้ ตัวอย่างคำขอและคำตอบอยู่ที่นี่: https://pastebin.com/aqnMJk98 https://pastebin.com/UAh0h8Zz

เซิร์ฟเวอร์ของฉันมี CPU 12 คอร์ RAM 24 GB และ SSD มันใช้งาน Ubuntu 16.04 กับ Apache2 PHP7-fpm และ MYSQL

เมื่อฉันดูกระบวนการอัปเดตฉันเห็นว่า 5 คอร์ที่มี MySQL อยู่ที่ 100% PHP นั้นใช้งานได้เล็กน้อยและส่วนที่เหลือก็ไม่ทำงาน หน่วยความจำเล็ก ๆ น้อย ๆ ที่ใช้iotopบอกว่า SSD ของฉันเบื่อ

ฉันดูประสิทธิภาพของฐานข้อมูลและเห็นว่าวีโอไอพียิงไปในกระบวนการเพิ่มคำสั่งนับพันให้กับฐานข้อมูล ตกลงไหม

เมื่อฉันอัปเดตด้วยการนำเข้า CSV วีโอไอพีมันเร็วกว่ามาก

ฉันจะทำอะไรเพื่อเร่ง Magento2 นี้ขึ้น? ในสถานการณ์นี้มันเป็นไปไม่ได้ที่จะทำงานได้ดีกับร้านนี้


คุณใช้ส่วนขยายใด ปัญหาอาจเกี่ยวข้องกับหนึ่งในส่วนขยายของคุณ
Bunyamin Inan

@tadeus คุณแก้ไขปัญหาความเร็วของคุณใน 2 ปีที่ผ่านมาหรือไม่? มิฉะนั้นข้อจำกัดความรับผิดชอบ: ฉันเป็นผู้เขียนเนื้อหาของเว็บไซต์ที่กล่าวถึงในโปรไฟล์ของฉันโปรไฟล์เครือข่ายที่เรามีสคริปต์ยูทิลิตี้ฟรีเพื่อปรับปรุงประสิทธิภาพและบริการวิเคราะห์อื่น ๆ
Wilson Hauck

คำตอบ:


1

นำเข้าจำนวนมาก

กุญแจสำคัญคือการใช้การนำเข้าแบทช์เหมือนที่คุณพูดถึง:

เมื่อฉันอัปเดตด้วยการนำเข้า CSV วีโอไอพีมันเร็วกว่ามาก

พิจารณาทบทวน SOAP API ของคุณใหม่และเปลี่ยนเป็นโหมดกลุ่มเช่นคุณสามารถสร้างมิดเดิลแวร์ที่จะรับข้อมูลผลิตภัณฑ์ของคุณและสร้างไฟล์ csv ซึ่งสามารถฟีดเข้าสู่ Magento ได้ในภายหลัง

มีส่วนขยายจากบุคคลที่สามที่ช่วยได้

คำแนะนำด้านประสิทธิภาพโดยทั่วไป

คุณสามารถลองเพิ่มความเร็วของวีโอไอพีได้เอง แต่คุณจะได้รับการปรับปรุงจาก ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 10% หนึ่ง ๆ

  1. ตรวจสอบให้แน่ใจว่าคุณไม่มีรหัสที่ไม่มีประสิทธิภาพ
    1. ตรวจสอบว่ารหัสของคุณไม่เกิดการสังเกต / ข้อผิดพลาด / คำเตือน
    2. ตรวจสอบว่าคุณไม่มีผู้ฟังเหตุการณ์ราคาแพงในส่วนขยายที่ติดตั้ง (จากบุคคลที่สามหรือจากตัวคุณเอง)
  2. เมื่อลบประกาศและคำเตือนเสร็จแล้วให้ลองปิดใช้งานการบันทึก
  3. ตรวจสอบ Magento และส่วนขยายของบุคคลที่สามที่คุณไม่ได้ใช้งานและสามารถปิดใช้งานดูโมดูลที่ฉันสามารถปิดการใช้งานใน Magento 2 สำหรับการอ้างอิง
  4. ในกรณีที่เซิร์ฟเวอร์ฐานข้อมูลของคุณอยู่ในเครื่องเดียวกับแอปพลิเคชั่น Magento - ตรวจสอบให้แน่ใจว่าคุณใช้ซ็อกเก็ต linux แทนการเชื่อมต่อ TCP / IP
  5. ในกรณีที่เซิร์ฟเวอร์ฐานข้อมูลของคุณไม่ได้อยู่ในเครื่องเดียวกับ Magento application - ตรวจสอบให้แน่ใจว่า PHP ไม่จำเป็นต้องทำการแก้ไข DNS ทุกครั้งที่ทำการสืบค้นฐานข้อมูล
  6. ตรวจสอบคำแนะนำการปรับประสิทธิภาพฐานข้อมูลบทความ Percona ถูกกล่าวถึงในหนึ่งในคำตอบแล้วตรวจสอบhttps://github.com/major/MySQLTuner-perl
  7. ตรวจสอบโหมดการทำดัชนีคุณภาพเยี่ยมเปลี่ยนเป็นดัชนีตามกำหนดเวลาและดำเนินการทำดัชนีใหม่ทุกคืนหรือหลังจากการนำเข้าเสร็จสมบูรณ์ไม่ใช่บันทึกผลิตภัณฑ์ https://devdocs.magento.com/guides/v2.2/extension-dev-guide/indexing.html#m2devgde-indexing-modes

ในกรณีที่กล่าวมาข้างต้นเสร็จสิ้นและคุณต้องการประสิทธิภาพเพิ่มขึ้น:

  • โปรไฟล์แอปพลิเคชันของคุณด้วย xDebug หรือแบล็กไฟร์ดูว่าคอขวดอยู่ที่ไหนพยายามกำจัดออก
  • ถามไปรอบ ๆ แต่จะเจาะจงมากขึ้นอธิบายสิ่งที่คุณพยายามปรับปรุงในขณะนี้
  • ลองถามหุ้นส่วนวีโอไอพีหรือผู้รับรองวีโอไอพีที่ผ่านการรับรองเพื่อขอความช่วยเหลือ

0

ปัญหานี่คือ SOAP Call นั้นแพงมาก หากคุณขอ SOAP เพื่อเพิ่ม / แก้ไข / ลบผลิตภัณฑ์วีโอไอพีจะต้องเข้าร่วมโต๊ะจำนวนมากเพื่อรับข้อมูลที่จำเป็นทั้งหมด พฤติกรรมนี้เมื่อรวมกับ PHP เองทำให้ช้าลงสำหรับจำนวนของผลิตภัณฑ์หรือข้อมูลที่คุณต้องการประมวลผล

Magento แนะนำให้ใช้คลัสเตอร์เซิร์ฟเวอร์ 5 โหนด (1 x DB, 4 x Webserver) เพื่อจัดการปริมาณข้อมูล

ฉันขอแนะนำให้ปรับขนาดแนวนอนตัวอย่างเช่น AWS นี่อาจส่งผลกระทบอย่างมากต่อธุรกิจของคุณ แต่ IMHO คุณจะไม่สามารถปรับแต่งวีโอไอพีให้ทำงานได้ดีขึ้น

ภายใน AWS คุณควรใช้คุณสมบัติของกลุ่มการรับสัญญาณอัตโนมัติที่รับผิดชอบจำนวนเซิร์ฟเวอร์ที่คุณเปิดใช้ ทุกครั้งที่คุณเพิ่มข้อมูลมีเซิร์ฟเวอร์ใหม่ที่เปิดตัวเพื่อจัดการกับแรงกดดัน สามารถทำได้ด้วย AWS RDS (DB Service) ง่ายและรวดเร็ว

ในกรณีที่ 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 มีประโยชน์ในการช่วยคุณในการปรับแต่งและตรวจสอบว่า MySQL กำลังทำอะไรอยู่ โปรแกรมอรรถประโยชน์นี้สร้างขึ้นโดย Oracle / MySQL; ไม่ใช่แอปแชร์แวร์แบบสุ่มบางตัว

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.