Profilowanie działających instancji skryptów
Cloudflare wprowadziło funkcję on-demand profilowania procesora oraz pamięci dla skryptów Workers i Durable Objects, pozwalającą badać wąskie gardła wydajnościowe na produkcji przy użyciu interaktywnych wykresów płomieniowych. Rozwiązanie to pozwala zespołom namierzać kosztowne funkcje oraz alokacje pamięci bez opierania się wyłącznie na logach i zagregowanych metrykach. Deweloperzy mogą rejestrować profile dla już wdrożonej wersji skryptu, gdzie szersze sekcje wykresów wskazują funkcje zużywające najwięcej czasu procesora lub próbkowanej pamięci. Wyniki można również pobierać do analizy offline.
Działanie na żywo i obsługa obiektów stanowych
Kluczową cechą mechanizmu jest to, że profilowanie dotyczy już uruchomionego izolatu, a nie uruchamiania nowej instancji od zera. Umożliwia to badanie kodu wykonującego się pod wpływem rzeczywistego ruchu produkcyjnego. Obiekty Durable Objects zyskały dodatkowe wsparcie polegające na możliwości profilowania konkretnej nazwanej instancji, co ułatwia analizę problemów powiązanych z obciążeniami stanowymi. Architektura rozproszona Cloudflare wymaga, aby żądanie profilowania zidentyfikowało wersję skryptu i zlokalizowało odpowiedni aktywny izolat, a w przypadku obiektów Durable Objects skierowało żądanie do maszyny hostującej dany obiekt.
Różnice między profilowaniem CPU a pamięci
Profilowanie procesora i pamięci służy do rozwiązywania odrębnych problemów wydajnościowych. Profilowanie CPU próbkuje stosy wywołań w interwałach jednamilisekundowych, aby ujawnić, gdzie marnowany jest czas wykonania, natomiast profilowanie pamięci wskazuje alokacje przypisane do funkcji i pomaga odnaleźć kod generujący nadmierną presję na pamięć. Cloudflare wykorzystało to narzędzie wewnętrznie do wykrycia zbędnych obliczeń w skrypcie bazy R2 oraz do identyfikacji wycieków pamięci powodowanych przez częściowo wyłączoną instrumentację, co pozwoliło obniżyć zużycie zasobów poniżej limitu.