Kaip sumažinti programėlės hostingo išlaidas
Norėdami sumažinti hostingo išlaidas, sužinokite, kas iš tikrųjų veikia ir kodėl, tada leiskite viskam snausti, kai niekas nenaudoja. Hostuose, kurie mažina iki nulio, neaktyvi programėlė ir užmigusi duomenų bazė kainuoja labai mažai, todėl didžiausi sutaupymai dažniausiai ateina pašalinus tai, kas jas laiko budrias – dažniausiai kodą, kuris kas kelias sekundes tikrina duomenų bazę – o vėliau sumažinus srautą ir ištrynus programėles, kurių niekas nenaudoja.
Dauguma mažų programėlių neturi srauto problemos. Jos turi „kažkas visada įjungta“ problemą. Šis vadovas parodo, kaip ją rasti ir ištaisyti, su užklausomis, kurias galite duoti DI programėlių kūrėjui.
Ką iš tikrųjų mokate
Mažų programėlių hostingo sąskaitos susideda iš kelių dalykų. Žinodami, kuris yra didelis, žinosite, kur žiūrėti.
| Išlaidos | Kas jas lemia | Įprastas sprendimas |
|---|---|---|
| Skaičiavimai (serveris) | Kiek galinga mašina ir kiek valandų ji veikia | Leiskite jai snausti; parinkite tinkamo dydžio |
| Duomenų bazė | Jos dydis ir kiek ji budi | Sustabdykite nuolatines užklausas, kad ji galėtų snausti |
| Srautas | Kiek duomenų atsisiunčia lankytojai | Suspauskite vaizdus, talpinkite failus podėlyje |
| Saugykla | Failai ir duomenys, kuriuos laikote | Ištrinkite senus įkėlimus, žurnalus ir atsargines kopijas, kurių nereikia |
| Trečiųjų šalių API | Skambučiai į DI modelius, žemėlapius, el. paštą, SMS | Talpinkite rezultatus podėlyje, nustatykite limitus |
Daugelis šiuolaikinių hostų, įskaitant Mythex, mažina iki nulio: kai niekas nenaudoja programėlės, serveris sustoja ir skaičiavimams nieko nekainuoja, o kitą kartą apsilankius vėl pabunda. Tai pakeičia klausimą iš „koks mano serveris?“ į „kodėl mano serveris budi?“.
1 žingsnis: pažiūrėkite, kur eina pinigai
Prieš ką nors keisdami, atidarykite hostingo naudojimo puslapį ir raskite:
- Kuris projektas kainuoja daugiausia. Dažnai viena programėlė sudaro didžiąją sąskaitos dalį.
- Kuri kategorija – skaičiavimai, duomenų bazė, srautas ar saugykla.
- Kada išleidžia. Lygi linija per naktį, kai nėra naudotojų, yra ženklas, kad kažkas laiko programėlę budrią.
Mythex naudojimo informacija rodo paskutines 30 dienų, suskirstytas į Build (DI agentas) ir Run (hostingas, srautas, duomenų bazė ir failų saugykla), su suskirstymu pagal projektą.
2 žingsnis: leiskite neaktyvioms programėlėms ir duomenų bazėms snausti
Tai tikrasis svertas daugumai mažų programėlių. Duomenų bazė, kuri snaudžia, kai neaktyvi, ir pabunda kitos užklausos metu, tyliomis valandomis beveik nieko nekainuoja. Duomenų bazė, į kurią kreipiamasi kas kelias sekundes, niekada nebūna neaktyvi, todėl mokate visą dieną.
Mythex aparatinės įrangos limitai paskelbtoms programėlėms nurodo, kaip tai veikia: snaudžianti programėlė neturi skaičiavimo išlaidų, duomenų bazė prasideda mažiausiu dydžiu, auga, kol užimta, užmiega po 5 neaktyvių minučių ir yra apmokama pagal dydį, padaugintą iš laiko, kiek buvo budri. Taigi programėlė, kuri į savo duomenų bazę kreipiasi net kartą per kelias minutes, dieną ir naktį, apmokama kaip visada užimta – o ta pati programėlė be fono triukšmo kainuoja labai mažai.
Dažni dalykai, kurie laiko programėlę budrią:
- Apklausimas. Puslapis kas 2–5 sekundes klausia serverio „ar kas nors naujo?“. Palikus tą skirtuką atidarytą viename nešiojamajame, duomenų bazė niekada neužmiega.
- Automatiškai atsinaujinantys skydeliai, kurie perkrauna duomenis pagal laikmatį, net kai niekas nežiūri.
- Veikimo laiko stebėjimo įrankiai, kurie kas minutę pingina programėlę.
- Fono ciklai serverio kode –
setInterval, kuris amžinai valo ar sinchronizuoja duomenis. - Suplanuoti „palaikymo gyvam“ užklausos, kurias kažkas pridėjo, kad išvengtų lėto pirmo apsilankymo – jos veikia kaip tik užkirsdamos kelią miegui, o būtent tai ir kainuoja pinigus.
Paprašykite DI rasti juos:
Peržiūrėk kodą ir raskite viską, kas veikia pagal laikmatį arba nuolat kreipiasi į duomenų bazę: apklausimą, setInterval, automatinį atnaujinimą, fono ciklus. Išvardyk kiekvieną, kaip dažnai jis veikia ir ar veikia, kai niekas neturi atidaryto puslapio. Kol kas nieko nekeisk.
Tada ištaisykite juos po vieno:
Skydelis kas 3 sekundes klausia /api/orders. Pakeisk, kad jis atsinaujintų tik tada, kai naršyklės skirtukas matomas, ir kas 60 sekundžių, o ne kas 3. Pridėk rankinį Atnaujinti mygtuką.
Jei jūsų programėlei tikrai reikia gyvų atnaujinimų (pokalbis, gyva rezultatų lentelė), paklauskite, ar ji gali siųsti atnaujinimus tik tada, kai kas nors pasikeičia, o ne nuolat klausti. Daugeliui programėlių pakanka „atnaujinti, kai naudotojas grįžta į skirtuką“.
3 žingsnis: parinkite tinkamo dydžio serverį
Didesnės mašinos per valandą kainuoja daugiau. Daugelis DI sukurtų programėlių pradeda nuo numatyto dydžio, kuris tinka; problemos kyla, kai prašoma „daugiau galios“ lėtumui ištaisyti, kuris iš tikrųjų buvo lėta užklausa.
- Laikykite mažiausią dydį, kuris aptarnauja jūsų srautą be klaidų.
- Jei matote atminties gedimus, pirmiausia paklauskite DI, ar programėlė į atmintį neįkelia per daug (visos lentelės vietoj vieno puslapio rezultatų).
- Pridėkite mašinų tik tada, kai turite išmatuotą srautą, kuriam jų reikia.
Mythex mašinos dydis parenkamas paskelbiant pagal tai, ko programėlei reikia; papildomos mašinos paleidžiamos tik tada, kai srautas didelis, ir vėl užmiega, kai jis krenta. Kaina priklauso nuo dydžio, todėl pokalbyje paprašykite mažesnio dydžio, jei manote, kad jis per didelis.
4 žingsnis: sumažinkite srautą
Srautas – tai, ką lankytojai atsisiunčia. Vaizdai paprastai yra didžiausia dalis.
- Suspauskite vaizdus ir naudokite šiuolaikinius formatus, pavyzdžiui WebP ar AVIF.
- Pakeiskite vaizdų dydį į tą, kuriuo jie rodomi. 4000 pikselių nuotrauka, rodoma kaip 400 pikselių miniatiūra, švaisto didžiąją dalį atsisiunčiamo.
- Įkelkite vaizdus, esančius žemiau ekrano krašto, tik kai prireikia (lazy-load).
- Talpinkite statinius failus (scenarijus, stilius, vaizdus) podėlyje, kad grįžtantys lankytojai jų vėl neatsisiųstų. Žr. kas yra podėlis.
- Neleiskite programėlei išduoti didelių failų kiekvieno puslapio peržiūros metu.
Patikrinkite kiekvieną programėlės vaizdą. Pakeiskite jų dydį iki didžiausio rodymo dydžio, konvertuokite į WebP ir įkelkite tik tai, kas žemiau pirmo ekrano, kai reikia. Nurodykite bendrą dydį prieš ir po.
Greitesni puslapiai ir mažesnis srautas paprastai eina kartu – žr. kaip padaryti svetainę greitesnę.
5 žingsnis: pašalinkite tai, ko niekas nenaudoja
- Nepublikuokite senų programėlių – bandomųjų diegimų, baigtų eksperimentų, praėjusių metų renginio svetainės.
- Ištrinkite senus įkėlimus, žurnalus ir eksportus, kurių nereikia.
- Ištrinkite bendrinamas peržiūros nuorodas, kurių nebenaudojate. Mythex atidarius peržiūros nuorodą projektas pabunda ir veikia už jūsų kreditus, todėl pamiršta nuoroda, kurią kas nors vis atidaro, vis dar kainuoja.
- Pašalinkite nenaudojamas paslaugas – API serverį ar darbuotoją, kurio programėlė nebeiškviečia.
6 žingsnis: apsvarstykite statinę svetainę
Jei jūsų svetainė neturi prisijungimų, išsaugotų naudotojų duomenų ar serverio logikos – rinkodaros svetainė, portfelis, meniu – ji gali būti statinė svetainė: paprasti failai, teikiami iš CDN. Nereikia serverio ar duomenų bazės, kurią reikėtų palaikyti. Mythex statinės svetainės, kol stovi, nenaudoja kreditų.
Ši svetainė neturi prisijungimų ar išsaugotų duomenų. Ar ją galima perkurti kaip statinę svetainę be serverio? Ką prarastume?
7 žingsnis: stebėkite mokamus API iškvietimus
Programėlėms, kurios kviečia DI modelius, žemėlapius ar SMS, trečiųjų šalių sąskaitos gali pranokti hostingą.
- Reikalaukite prisijungimo prie visko, kas kainuoja pinigus už kiekvieną iškvietimą.
- Pridėkite limitą vienam naudotojui (žr. kas yra greičio ribojimas).
- Talpinkite podėlyje atsakymus, kurie nesikeičia, pavyzdžiui, to paties adreso geokodavimą.
- Nustatykite išlaidų ribas ar įspėjimus kiekvienam paslaugos teikėjui.
Dažnos klaidos
- Spėjimas vietoj matavimo. Pirmiausia patikrinkite naudojimo suskirstymą; brangi dalis dažnai nėra tai, ko tikėjotės.
- Didesnio serverio pirkimas lėtumui spręsti. Trūkstantis duomenų bazės indeksas ar per didelio duomenų kiekio įkėlimas dažniausiai yra tikroji priežastis.
- Visko apklausimas. Kiekvienas kas kelias sekundes veikiantis laikmatis yra priežastis, kodėl duomenų bazė lieka budri.
- Programėlės pingimas, kad būtų „šilta“. Tai panaikina sutaupymą, kurį suteikia mažinimas iki nulio. Priimkite trumpą pabudimą pirmo apsilankymo metu arba sąmoningai mokėkite už nuolatinį veikimą.
- Senų diegimų pamiršimas. Nenaudojamos programėlės su duomenų bazėmis ir fono užduotimis tyliai kaupiasi.
- Nesuspaustos nuotraukos. Dažnai didžiausia srauto išlaidų dalis mažose svetainėse.
Kontrolinis sąrašas
- Žinau, kuris projektas ir kuri kategorija (skaičiavimai, duomenų bazė, srautas, saugykla) kainuoja daugiausia.
- Niekas nekreipiasi į duomenų bazę kas kelias sekundes, kai niekas nežiūri.
- Skydeliai atsinaujina pagal protingą intervalą arba tik tada, kai skirtukas matomas.
- Jokia stebėjimo priemonė ar fono ciklas nelaiko programėlės budrios be priežasties.
- Serveris yra mažiausias dydis, kuris veikia.
- Vaizdai pakeisti dydžiu, suspausti ir įkeliami tik prireikus; statiniai failai talpinami podėlyje.
- Seni diegimai nepublikuoti, seni failai ištrinti, nenaudojamos peržiūros nuorodos pašalintos.
- Svetainės be duomenų ar prisijungimų yra statinės.
- Mokamos API turi prisijungimą, limitus vienam naudotojui ir teikėjo išlaidų įspėjimus.
Hostingo išlaidų mažinimas Mythex
Mythex naudoja vieną kreditų balansą statymui ir hostingui, todėl hostingo sutaupymai palieka daugiau kreditų statymui. Keli su Mythex susiję dalykai:
- Paskelbtos programėlės ir jų duomenų bazės snaudžia, kai neaktyvios, ir pabunda kito apsilankymo metu. Duomenų bazė užmiega po 5 neaktyvių minučių, todėl nuolatinio apklausimo pašalinimas dažniausiai yra didžiausia nauda.
- Pro moka pusę Free kainos už hostingą, duomenų bazes, srautą, failų saugyklą ir smėlio dėžės peržiūrą; DI kainuoja tiek pat abiejuose planuose. Žr. Kreditai.
- Gausite el. laišką prieš tai, kai žemas balansas galėtų sustabdyti paskelbtą programėlę, o sustabdytos programėlės išsaugo savo duomenų bazę ir failus.
Platesniam vaizdui apie veikimo išlaidas žr. kiek kainuoja programėlės kūrimas ir kas yra žiniatinklio hostingas.
Klausimai
Kodėl mano hostingo sąskaita didelė, nors programėlę naudoja nedaug žmonių?
Dažniausiai kažkas ją laiko budrią. Kodas, kuris kas kelias sekundes tikrina duomenų bazę, kas minutę pingiantis veikimo laiko stebėjimo įrankis ar pamirštas fono ciklas gali laikyti serverį ir duomenų bazę veikiančius visą parą, net kai nėra lankytojų.
Ar snaudžianti programėlė kainuoja pinigus?
Hostuose, kurie mažina iki nulio, snaudžianti programėlė beveik nieko nekainuoja skaičiavimams; paprastai vis tiek mokate už saugomus duomenis. Mythex paskelbta programėlė, kol snaudžia, neturi skaičiavimo išlaidų, o jos duomenų bazė užmiega po 5 neaktyvių minučių ir yra apmokama tik už laiką, kai buvo budri.
Ar apklausimas blogas hostingo išlaidoms?
Apklausimas kas kelias sekundes reiškia, kad duomenų bazė niekada neturi neaktyvaus laikotarpio, todėl negali snausti. Klauskite rečiau, tik kol kas nors žiūri į puslapį, arba siųskite atnaujinimus vietoj to, kad prašytumėte.
Ar statinė svetainė pigiau hostinasi nei žiniatinklio programėlė?
Paprastai taip. Statinė svetainė – tai tik failai, teikiami iš CDN, be serverio ar duomenų bazės, kurią reikėtų palaikyti. Jei svetainė neturi prisijungimų ar išsaugotų duomenų, kurti ją kaip statinę – vienas didžiausių galimų sutaupymų.