Ażurowy cold start tak zimny że React zamarza

Ażurowy cold start tak zimny że React zamarza

Wątek przeniesiony 2024-04-23 16:54 z Inżynieria oprogramowania przez Riddle.

DE
  • Rejestracja:prawie 8 lat
  • Ostatnio:około 5 godzin
  • Postów:563
0

Postawiłem sobie API w ASP.NET Web API (.NET 8) w Azure App Service na Free tier i bazkę SQL też na Azure w jakiejś nowej free opcji, a komunikacja odbywa się z pomocą EF Core 8. Rozumiem że za darmo to nie ma co oczekiwać cudów, ale cold start trwa około minuty i jak biję do tego API z apki frontendowej to ona rezygnuje zanim dostanie odpowiedź. Ale nie chcę zmieniać timeoutu, chcę żeby ten cold start był szybszy, bo google mi nie zaindeksuje treści z takim czasem.
Apka się ubija po jakichś 15 minutach bez requestów.
W necie proponują zrobienie sobie skryptu który odpala się co 10 minut i robi request no ale bez jaj że tak ma wyglądać cloud engineering w 2024.
Inne komentarze piszą, że EF może być źle skonfigurowany, albo połączenie z bazą zamulać, ale request z localhosta trwa 5 sekund po długiej przerwie.
Jakies inne pomysły?

bagietMajster
  • Rejestracja:ponad rok
  • Ostatnio:około 20 godzin
  • Postów:434
3

Bo cloud tak nie wygląda w 2024, wygląda jak jesteś na freetierze i oczekujesz cudów.


Praktyczna implementacja TDD zaczyna się od ciebie.
KL
  • Rejestracja:11 miesięcy
  • Ostatnio:około 3 godziny
  • Postów:360
1

App Service na free tierze tak bedzie dzialal. Na innych planach mozesz wlaczyc Always On, ale na free jest to wylaczone.
Na azure container apps pewnie cold start bylby troche mniejszy (ale nie oczekiwalbtyym cudow ponizej <30s) i tez maja tam jakis darmowy przydzial.

Hack ze skryptem moze i by dzialal, ale pamietaj ze free tier ma przydzial procka na 60 minut dziennie (nie wiem jak dokladnie liczone) wiec jest opcja ze tym skryptem ktory na sile by utrzymywal apke przy zyciu bys to przekroczyl i juz do konca dnia by nie wstala.

edytowany 1x, ostatnio: Klaun
FU
  • Rejestracja:11 miesięcy
  • Ostatnio:10 miesięcy
  • Postów:7
1

Coś robisz źle.

Raz że free nie ucina szybkości (nie w tym sensie w którym ty używasz).

Dwa że do indeksowania przez Google nie wystawia się apek w React.

Trzy że takich krytycznych rzeczy nie robisz lambdą do tego się odnosi rozumiem cold start o którym piszesz.

KL
  • Rejestracja:11 miesięcy
  • Ostatnio:około 3 godziny
  • Postów:360
1

@francuskUoncznik chyba wypisales losowe rzeczy ktore ci do glowy przyszly jak uslyszales o chmurze.

francuskUoncznik napisał(a):

Raz że free nie ucina szybkości (nie w tym sensie w którym ty używasz).

Dokladnie to robi w tym sensie, w ktorym tego uzywa. Jak apka nie dostaje requestow przez X czasu to App Service wywali apke z puli (pod spodem jest IIS) i kolejny request bedzie sie wiazal z cold startem.

Dwa że do indeksowania przez Google nie wystawia się apek w React.

To akurat prawda. Chociaz od biedy w jakims stopniu chyba dalo sie zaindeksowac nawet apki SPA?

Trzy że takich krytycznych rzeczy nie robisz lambdą do tego się odnosi rozumiem cold start o którym piszesz.

Prawda, "krytycznych" rzeczy nie robisz lambda. Przy czym on nie uzywa lambdy bo to Azure a nie AWS i wprost napisal ze ma apke na usludze App Service xD

DE
  • Rejestracja:prawie 8 lat
  • Ostatnio:około 5 godzin
  • Postów:563
0

Dwa że do indeksowania przez Google nie wystawia się apek w React.

To akurat prawda. Chociaz od biedy w jakims stopniu chyba dalo sie zaindeksowac nawet apki SPA?

Kiedyś pracowałem przy podobnej apce SPA i google indeksowało treści doczytywane, ale nie zawsze, pewnie też przez cold start - jak proces indeksowania trwał w trakcie działania apki to treści były indeksowane, a jak w nie to google nie czekało aż wstanie. Przynajmniej takie miałem wnioski jak widziałem te dziury w treściach wyników google.

DE
  • Rejestracja:prawie 8 lat
  • Ostatnio:około 5 godzin
  • Postów:563
0
bagietMajster napisał(a):

Bo cloud tak nie wygląda w 2024, wygląda jak jesteś na freetierze i oczekujesz cudów.

To jak Wy stawiacie hobbystyczne apki? Najtańszy tier kosztuje 54$ na miesiąc, trochę sporo jak na prostego bloga

bagietMajster
  • Rejestracja:ponad rok
  • Ostatnio:około 20 godzin
  • Postów:434
4
debugariusz napisał(a):
bagietMajster napisał(a):

Bo cloud tak nie wygląda w 2024, wygląda jak jesteś na freetierze i oczekujesz cudów.

To jak Wy stawiacie hobbystyczne apki? Najtańszy tier kosztuje 54$ na miesiąc, trochę sporo jak na prostego bloga

Nie na cloudzie, weź jakiegoś mikrusa za 100zł/rok i wystarczy. Cloud jest mega drogi do małych rzeczy, do dużych to nawet droższy :P


Praktyczna implementacja TDD zaczyna się od ciebie.
KL
  • Rejestracja:11 miesięcy
  • Ostatnio:około 3 godziny
  • Postów:360
2
debugariusz napisał(a):

To jak Wy stawiacie hobbystyczne apki? Najtańszy tier kosztuje 54$ na miesiąc, trochę sporo jak na prostego bloga

Stawianie prostego bloga na chmurze to troche przerost formy nad trescia. No chyba ze to tylko w celu nauki chmury to do tego masz wlasnie free tiery i triala.

Jak stawiam hobbystycznie apki?
Jesli chodzi o Azure, to stawiam na subskrypcji z licencji VS Pro/Enterprise ktora zapewnia moje korpo, wtedy mam 50 albo 150 euro (w zaleznosci od licencji) miesiecznie. Tylko to raczej do testow/nauki/zabawy, a nie stawiania prywatnych rzeczy ktore maja stac latami (chociaz sie zdarzalo 😀 ).
Inna opcja to tak jak powiedzial @bagietMajster, jakis prosty VPS bedzie o rzad wielkosci tanszy, a i niewykluczone ze wydajniejszy.

Poza tym, na chmurze da sie zrobic po taniosci ale trzeba sie troche rozeznac. Np. najtanszy nie-darmowy App Service kosztuje ~$12 jak wezmiesz wersje Linuxowa, a nie Windowsowa. Masz tez Container Appsy ktore maja duzo nizszy billing jak apka jest nieaktywna (nie otrzymuje requestow i nie zuzywa procka). Podejrzewam ze bedzie troche drozej niz ~$12, ale dalej w przypadku bloga na pewno taniej niz wspomniane ~$54. No i ostatnie, prostego bloga to tak na prawde mozesz postawic na czyms co generuje ci statyczne HTMLe i hostujesz to pozniej jako statyczna stronke. Tutaj juz bedzie calkiem po taniosci bo wezmie darmowa wersje Azure Static WebApp i fajrant. Nie kazdy blog potrzebuje kobyl w postaci wordpressa 😉

piotrpo
  • Rejestracja:ponad 7 lat
  • Ostatnio:około godziny
  • Postów:3277
0

Do takich zastosowań poszukaj na backend technologii, która wstaje w kilka sekund, a nie w minutę.
Dla przykładu https://ktor.io/
Oczywiście musisz zwrócić uwagę co się dzieje podczas startu - im mniej, tym lepiej. W chmurach warto sprawdzić, czy jakieś tam serverless nie jest napisany pod konkretny język z którym działa, a z pozostałymi udaje, że działa.

obscurity
ASP.NET wstaje w sekundę, to nie z aplikacją jest problem tylko usługą chmurową. Azure jest dość wolny
DE
  • Rejestracja:prawie 8 lat
  • Ostatnio:około 5 godzin
  • Postów:563
0

Postanowiłem skorzystać z wspominanego w innych wątkach polskiego hostingu .NET i na razie śmiga aż milo. Dam znać za jakiś czas jak będą chętni. Przeniosłem tylko API i bazę, a front zostawiłem w Azure Storage. Zastanawiam się jak u nich z bezpieczeństwem, bo po zalogowaniu na serwer bazodanowy widzę bazy innych klientów (tylko nazwy, nie mogę w nie wejść). Testuję darmową opcję przez 14 dni, później wybiorę opcję za 130zł/rok.

edytowany 1x, ostatnio: debugariusz
ledi12
  • Rejestracja:ponad 5 lat
  • Ostatnio:12 dni
  • Lokalizacja:Wrocław
0

Bo masz pewnie tego app w serverless i ten "servless" musi się odpalić :D Ale fakt, na free tierze nie ma co oczekiwać cudów. Cloud generalnie jest dla kasiastych ;>


Robię http response status cody w martwych ciągach
edytowany 1x, ostatnio: ledi12
KL
Temat walkowany wielokrotnie. Usluga z czarnej listy. Zamykam watek.
ledi12
@Klaun: Polecisz jakiś zasilacz?
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)