Mục đích của việc xây dựng trang bị khóaLoadData / không được quản lý mất khoảng một phút, dành cho giấc ngủ


11

Tôi nghĩ kể từ khi cập nhật lên Magento 2.3.1, tôi gặp vấn đề với tải trang không được kiểm soát (trong quá trình phát triển).

Tôi đã thực hiện theo dõi blackfire.io và hóa ra 42 giây được dành cho chúng tôi ngủ ở đây .

Bây giờ tôi đang tự hỏi mục đích của việc này là gì. Tôi đoán tôi đang chạy trong một số loại điều kiện cuộc đua?

Có ai đã trải nghiệm một cái gì đó như thế này trước đây?

EDIT: Ngăn xếp cuộc gọi dường như liên quan đến Commerce.

Câu trả lời:


8

Vâng đó là một sự lựa chọn? - các kỹ sư Magento đã thực hiện.

Đây không phải là một câu trả lời, nhưng có vẻ như chức năng đó chấp nhận một cuộc gọi lại có nghĩa là để tải dữ liệu được lưu trữ. Cuộc gọi lại kiểm tra nếu hiện tại có một khóa. Nếu không, nó đặt một khóa tại chỗ, tải dữ liệu và sau đó phát hành khóa. Nếu có một khối tại chỗ, nó sẽ ngủ trong vài 100,000giây (.1 giây), sau đó gọi lại trình tải.

Vì vậy, suy nghĩ thành tiếng, tôi đoán là

  1. Có thể số lượng yêu cầu nhiều hơn bình thường đối với chức năng này
  2. Cao hơn thời gian đọc bình thường từ bộ nhớ cache của bạn.


7

Cơ chế bị khóaLoadData cần giảm tải trên máy chủ.

Trước đây khi bộ đệm cấu hình được làm sạch trên các trang web được tải cao, tất cả máy khách đã tạo cùng một thông tin làm tăng đáng kể tải cpu / io.

Với lockLoadData, chỉ có một khách hàng sẽ tạo bộ đệm và những người khác sẽ đợi nó.

Thêm chi tiết về cách thức hoạt động.

Hàm đầu tiên gọi lại "lấy dữ liệu" và nếu nó nhận được dữ liệu hơn là chỉ trả về nó (vì vậy nếu dữ liệu trong bộ đệm, mã sẽ hoạt động như trước và không sử dụng bất kỳ khóa nào).

Nếu dữ liệu không có sẵn và khóa bị khóa, thì trong vòng lặp, chúng tôi sẽ cố gắng tải dữ liệu cho đến khi dữ liệu được lấy hoặc khóa bị xóa.

Nếu không có khóa thì chúng ta tạo khóa và tạo dữ liệu lưu trong bộ đệm và xóa khóa và trả lại dữ liệu

PS: Chúng tôi đã gửi những thay đổi này như một bản vá cho một trong những khách hàng có tải lên tới 20kRPM và nó hoạt động ít nhất 3 tháng, không có vấn đề gì. Vì vậy, có thể vấn đề trong tùy chỉnh / mô-đun của bạn (ví dụ: nếu chúng phá vỡ cơ chế bộ đệm)


Thật thú vị ... Dù sao trong trường hợp của tôi, nó chạy các hạt. Tôi đang gỡ lỗi điều này với Alan, PulseStorm
Alex

có vẻ như là một giải pháp thực sự kém, có nghĩa là tất cả người dùng đang chờ sẽ duy trì quy trình của họ .. tại sao họ không thể sử dụng khóa bảng
OZZIE

@OZZIE bạn có thích tất cả người dùng tạo dữ liệu, thay vì ngủ cho đến khi hoàn thành? Chúng tôi không có tài nguyên CPU miễn phí toán học
KAndy
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.