Cải thiện hiệu suất cho các cuộc gọi SOAP


13

Tôi gặp vấn đề về hiệu năng với Magento 2.1

Trong cửa hàng của tôi, tôi có 90.000 sản phẩm. Tôi đã thêm các sản phẩm này vào xà phòng. Khi tôi làm điều này, mất khoảng 7 giây cho mỗi bài viết (sản phẩm?) (Yêu cầu> Phản hồi). Tóm lại, phải mất một vài ngày để khởi tạo tất cả các sản phẩm.

Bây giờ tất cả các sản phẩm đang ở trong cửa hàng. Tất cả một vài tuần tôi phải cập nhật một số điều trên các bài báo (sản phẩm). Khi tôi làm điều này với xà phòng một lần nữa, nó sẽ mất cùng thời gian. Khi tôi cập nhật các cửa hàng là không thể sử dụng. Một yêu cầu ví dụ và phản hồi có tại đây: https://pastebin.com/aqnMJk98 https://pastebin.com/UAh0h8Zz

Máy chủ của tôi có CPU 12 nhân, RAM 24 GB và SSD. Nó chạy Ubuntu 16.04 với Apache2 PHP7-fpm và MYSQL.

Khi tôi xem quá trình cập nhật, tôi thấy rằng 5 lõi với MySQL là 100% PHP đang hoạt động một chút và phần còn lại không hoạt động. Ram chỉ là một lượng nhỏ được sử dụng iotopnói rằng SSD của tôi đã chán.

Tôi đã xem hiệu suất cơ sở dữ liệu và thấy rằng Magento đã bắn trong quá trình thêm hàng ngàn lệnh vào cơ sở dữ liệu. Được không

Khi tôi cập nhật nó với nhập CSV Magento, nó nhanh hơn nhiều.

Tôi có thể làm gì để tăng tốc Magento2 này? Trong tình huống này không thể làm việc tốt với cửa hàng này.


Bạn đang sử dụng tiện ích mở rộng nào? Vấn đề có thể liên quan đến một trong các tiện ích mở rộng của bạn.
Bunyamin Inan

@tadeus Bạn đã giải quyết vấn đề tốc độ của mình trong 2 năm qua chưa? Nếu không, TUYÊN BỐ TỪ CHỐI: Tôi là tác giả nội dung của trang web được đề cập trong hồ sơ của tôi, hồ sơ Mạng nơi chúng tôi có Tập lệnh Tiện ích miễn phí để cải thiện hiệu suất và các Dịch vụ Phân tích khác.
Wilson Hauck

Câu trả lời:


1

Nhập khẩu số lượng lớn

Điều quan trọng là sử dụng nhập hàng loạt, như bạn đã đề cập:

Khi tôi cập nhật nó với nhập CSV Magento, nó nhanh hơn nhiều.

Cân nhắc xem xét lại API SOAP của bạn và thay đổi nó thành chế độ hàng loạt, ví dụ: bạn có thể tạo một số phần mềm trung gian chấp nhận dữ liệu sản phẩm của bạn và tạo tệp csv mà sau này có thể được đưa vào Magento.

Có một số phần mở rộng từ các bên thứ 3 giúp với điều đó.

Tư vấn hiệu suất chung

Bạn có thể cố gắng tăng tốc bản thân Magento, nhưng bạn sẽ được tăng ~ 1-10% từ mỗi cải tiến, khi bạn thực hiện nhiều trong số chúng, lợi ích được nhân lên:

  1. Hãy chắc chắn rằng bạn không có mã không hiệu quả
    1. Kiểm tra xem mã của bạn không sinh ra thông báo / lỗi / cảnh báo
    2. Kiểm tra xem bạn không có trình nghe sự kiện đắt tiền trong các tiện ích mở rộng đã cài đặt (từ bên thứ 3 hoặc từ chính bạn).
  2. Sau khi hoàn thành việc xóa các thông báo và cảnh báo - hãy xem xét việc vô hiệu hóa đăng nhập.
  3. Kiểm tra Magento và các tiện ích mở rộng của bên thứ 3 mà bạn không sử dụng và có thể tắt xem tôi có thể tắt mô-đun nào trong Magento 2 không? để tham khảo.
  4. Trong trường hợp máy chủ cơ sở dữ liệu của bạn nằm trên cùng một máy với ứng dụng Magento - hãy đảm bảo bạn đang sử dụng ổ cắm linux thay vì kết nối TCP / IP.
  5. Trong trường hợp máy chủ cơ sở dữ liệu của bạn không nằm trên cùng một máy với ứng dụng Magento - hãy đảm bảo PHP không cần thực hiện phân giải DNS mỗi khi truy vấn cơ sở dữ liệu.
  6. Kiểm tra lời khuyên điều chỉnh hiệu suất cơ sở dữ liệu, bài viết percona đã được đề cập trong một trong những câu trả lời rồi, hãy kiểm tra https://github.com/major/MyQueryTuner-perl
  7. Kiểm tra các chế độ lập chỉ mục magento, chuyển sang lập chỉ mục theo lịch trình và thực hiện reindex mỗi đêm hoặc sau khi nhập xong, không lưu sản phẩm. https://devdocs.magento.com/guides/v2.2/extension-dev-guide/indexing.html#m2devgde-indexing-modes

Trong trường hợp tất cả các điều trên được thực hiện và bạn cần hiệu suất cao hơn:

  • hồ sơ ứng dụng của bạn với xDebug hoặc blackfire, xem cổ chai ở đâu, cố gắng loại bỏ chúng.
  • hỏi xung quanh, nhưng cụ thể hơn, giải thích chính xác những gì bạn đang cố gắng cải thiện vào lúc này.
  • xem xét yêu cầu đối tác Magento hoặc nhà phát triển Magento được chứng nhận để nhận được sự giúp đỡ.

0

Vấn đề ở đây là, các cuộc gọi SOAP rất tốn kém. Nếu bạn kích hoạt Yêu cầu SOAP để thêm / chỉnh sửa / xóa sản phẩm, Magento phải tham gia rất nhiều bảng để có được tất cả thông tin cần thiết. Hành vi này kết hợp với chính PHP làm cho số lượng sản phẩm hoặc dữ liệu bạn muốn xử lý chậm.

Chính Magento đề xuất một cụm máy chủ 5 nút (1 x DB, 4 x Webserver) để xử lý lưu lượng.

Tôi sẽ khuyên bạn nên mở rộng theo chiều ngang, ví dụ với AWS. Điều này có thể có tác động lớn hơn đến doanh nghiệp của bạn nhưng IMHO bạn sẽ không thể điều chỉnh Magento để hoạt động tốt hơn.

Trong AWS, bạn nên sử dụng Tính năng của nhóm tự động hóa chịu trách nhiệm về số lượng máy chủ bạn khởi chạy. Mỗi khi bạn thêm dữ liệu, sẽ có các máy chủ mới khởi chạy để xử lý áp lực. Điều tương tự có thể được thực hiện với AWS RDS (Dịch vụ DB) rất dễ dàng và nhanh chóng.

Trong trường hợp, AWS đó hoàn toàn không phải là một tùy chọn, bạn có thể thử tinh chỉnh Magento và PHP. Tôi khuyên bạn nên kiểm tra cài đặt cho:


0

Liên kết này giải thích cách điều chỉnh sử dụng bộ nhớ MySQL. Vì bạn có rất nhiều RAM, bạn có thể hưởng lợi từ việc phân bổ nhiều hơn cho MySQL. Đó có thể là một giải pháp ($) dễ dàng hơn và ít tốn kém hơn khi xây dựng một máy chủ cơ sở dữ liệu chuyên dụng.

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

Ngoài ra, bạn có thể thấy tiện ích MySQL Workbench hữu ích để giúp bạn điều chỉnh và cũng theo dõi những gì MySQL đang làm nói chung. Tiện ích được tạo bởi Oracle / MySQL; nó không phải là một số ứng dụng chia sẻ ngẫu nhiên.

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.