Jaki jest cel budowania zablokowanej strony / niepakowanej strony zajmuje około minuty, spędzonej na zasypianiu

11

Myślę, że od aktualizacji do Magento 2.3.1 mam problemy z niebuforowanymi ładowaniami stron (podczas programowania).

Zrobiłem ślad blackfire.io i okazuje się, że spędzamy tutaj 42 sekundy .

Teraz zastanawiam się, jaki jest tego cel. Chyba biegam w jakimś stanie wyścigowym?

Czy ktoś wcześniej czegoś takiego doświadczył?

EDYCJA: Stos wywołań wydaje się zawierać błąd handlowy.

Alex
źródło

Odpowiedzi:

8

To jest wybór? - wykonane przez inżynierów Magento.

To nie jest odpowiedź, ale wygląda na to, że ta funkcja akceptuje wywołanie zwrotne, które ma na celu załadowanie buforowanych danych. Oddzwonienie sprawdza, czy blokada jest aktualnie zainstalowana. Jeśli nie, blokuje się, ładuje dane, a następnie zwalnia blokadę. Jeśli blok jest na miejscu, śpi przez 100,000mikrosekundy (.1 sekundy), a następnie ponownie wywołuje moduł ładujący.

Tak więc, myśląc głośno, tak sądzę

  1. Może więcej niż normalnie liczba żądań do tej funkcji
  2. Wyższy niż zwykle czas odczytu z pamięci podręcznej.
Alan Storm
źródło
7

Mechanizm zablokowanyLoadData musi zmniejszyć obciążenie serwera.

Poprzednio po wyczyszczeniu pamięci podręcznej konfiguracji w witrynach o wysokim załadowaniu wszystkie klienty wygenerowały te same informacje, które znacznie zwiększają obciążenie procesora / pamięci.

Z zablokowanym ładowaniem danych tylko jeden klient wygeneruje pamięć podręczną, a inni będą na nią czekać.

Więcej informacji o tym, jak to działa.

Pierwsza funkcja wywołuje funkcję zwrotną „pobierz dane” i jeśli pobiera dane, to po prostu je zwraca (więc jeśli dane w pamięci podręcznej kod działa jak poprzednio i nie używają żadnych blokad).

Jeśli dane nie są dostępne, a blokada jest zablokowana, wówczas w pętli próbujemy ładować dane, dopóki dane nie zostaną pobrane lub blokada zostanie usunięta.

Jeśli nie ma blokady, tworzymy blokadę i generujemy dane w celu zapisania jej w pamięci podręcznej oraz usunięcia blokady i zwrotu danych

PS: Wysłaliśmy te zmiany jak łatkę dla jednego z klientów z obciążeniem do 20kRPM i działa co najmniej 3 miesiące bez żadnego problemu. Więc może problem w twoich dostosowaniach / modułach (na przykład, jeśli zepsuły one mechanizm pamięci podręcznej)

KAndy
źródło
Ciekawe ... W każdym razie w moim przypadku to wariactwo. Debuguję to z Alanem, PulseStorm
Alexem
wydaje się być naprawdę kiepskim rozwiązaniem, oznacza, że ​​wszyscy oczekujący użytkownicy utrzymają proces przy życiu .. dlaczego nie mogą po prostu użyć blokad stołu
OZZIE
@OZZIE, czy wolisz, aby wszyscy użytkownicy generowali dane, zamiast spać, dopóki się nie skończy? Nie mamy tak wolnych od matematyki zasobów procesora
KAndy