Yearly Pay yearly and get 2 months free on every paid plan. See plans
Zaloguj się Zacznij za darmo

Trzy strony na sekundę

Rankiem 22 września torun.ai zaczął się wlec. Farma zautomatyzowanych przeglądarek, ponad dwa tysiące adresów w trzy kwadranse, pobierała nasze strony publiczne jedna po drugiej, a w najgorszej minucie było to około trze…

Rankiem 22 września torun.ai zaczął się wlec. Farma zautomatyzowanych przeglądarek, ponad dwa tysiące adresów w trzy kwadranse, pobierała nasze strony publiczne jedna po drugiej, a w najgorszej minucie było to około trzech stron na sekundę. Strona internetowa powinna to znieść bez mrugnięcia okiem. Nasza nie zniosła: w najbardziej obciążonym oknie ponad jedna czwarta żądań trwała dłużej niż trzydzieści sekund, a setki odwiedzających zrezygnowały, zanim strona dotarła.

Nie to obciążenie, o którym myśleliśmy

Oczywistymi podejrzanymi były robot i procesor. Żaden się nie potwierdził. Gdy odtworzyliśmy te same trzy strony na sekundę na kopii serwisu, wytrzymała mniej niż minutę, a potem przestała cokolwiek kończyć. Użycie procesora spadło z 60 procent do 1, a liczba wątków wzrosła z 12 do 166. Przeciążony serwer pracuje więcej; ten czekał.

Podróż tam i z powrotem dla każdego słowa

Obserwacja serwera pamięci podręcznej podczas jednej strony pokazała, na co czekał. Jedna strona wysyłała do niego 585 poleceń, a 428 z nich to było jedno zapytanie i jego odświeżenie, raz za razem: tabela tłumaczeń, która w naszym serwisie jest pusta. Każdy przetłumaczony tekst na stronie, a strona ma ich setki, pytał o nią od nowa, a każde pytanie trzymało wątek, dopóki nie wróciła odpowiedź. Przy trzech stronach na sekundę wątki się skończyły i wszystko ustawiło się za nimi w kolejce.

Poprawka i limit

Te zapytania są teraz obsługiwane z pamięci przez minutę naraz, pobierane jeden raz po wygaśnięciu i czyszczone na serwerze, który zmienia tłumaczenie. Ta sama strona wysyła teraz 31 poleceń zamiast 585. Postawiliśmy też limit przed generowaniem stron: naraz powstaje stała liczba stron, krótka kolejka czeka, a wszystko ponad to od razu dostaje „spróbuj ponownie za chwilę”, zamiast spowalniać każdą stronę.

Zmierzone na produkcji

Po wydaniu z 23 września zmierzyliśmy działający serwis ponownie. Mediana strony powstaje w 42 milisekundy zamiast 249, a najwolniejsza na dwadzieścia w 72 milisekundy zamiast prawie dwóch sekund. Zapytanie wykonywane 214 razy na stronę wykonuje się teraz raz.

Lekcja, którą zapisaliśmy, jest prosta: liczba opisująca wydajność to pomiar, a nie przekonanie. Nigdy nie sprawdziliśmy, ile zniesie serwis publiczny. Teraz to zrobiliśmy i sprawdzimy ponownie, zanim podamy liczbę.

Udostępnij LinkedIn X E-mail
Wypróbuj na własnej pracyKażda odpowiedź pokazuje, ile kosztowała. Zacznij od planu bezpłatnego. Zacznij za darmo
Get product updates, not noise New models, features, and changelog highlights - a short email when something actually ships.
Subskrybując, zgadzasz się na otrzymywanie e-maili od ToRun z nowościami produktu. Możesz zrezygnować w dowolnym momencie. Polityka prywatności