Cik vienlaicīgu lietotāju iztur VPS: kā to aprēķināt

Viss sākas ar jautājumu: ko šie lietotāji dara? Tūkstotis cilvēku, kas pieslēgušies lietojumprogrammai, neveic tūkstoti pieprasījumu sekundē, un no kešatmiņas apkalpota lapa prasa simtreiz mazāk resursu nekā lapa, ko aprēķina katrā apmeklējumā. Šajā ceļvedī lietotāji pārvērsti pieprasījumos, pieprasījumi procesora laikā un atmiņā, un parādīts, kā to pārbaudīt ar slodzes testu.

Publicēts 2026. gada 26. oktobrī Autors: Lasīšanas laiks: 9 minūtes

Visi ceļveži

Galvenais

  1. Pieslēgušies lietotāji nav vienlaicīgi pieprasījumi: aktīvs lietotājs nosūta pieprasījumu aptuveni reizi 10 līdz 30 sekundēs.
  2. Apstrādē esošie pieprasījumi = pieprasījumi sekundē × viena pieprasījuma ilgums (Litla likums). Tieši šis skaitlis serverim jāiztur.
  3. Viens vCPU apkalpo ne vairāk kā 1000 ÷ (skaitļošanas milisekundes uz pieprasījumu) pieprasījumu sekundē: 20 ms skaitļošanas nozīmē 50 pieprasījumus sekundē.
  4. Atmiņa ierobežo darba procesu skaitu: katrs PHP vai Python process aizņem 40 līdz 200 MB.
  5. Kešatmiņa maina visu: no kešatmiņas apkalpota lapa prasa mazāk par milisekundi, aprēķināta WordPress lapa 100 līdz 300.
  6. Mēriet ar slodzes testu (k6, wrk) uz lietojumprogrammas kopijas, palielinot slodzi pakāpeniski.

No lietotājiem uz pieprasījumiem

«Vienlaicīgi lietotāji» apzīmē trīs dažādus lielumus atkarībā no tā, kurš runā:

No viena lieluma uz otru pāriet ar Litla likumu: apstrādē esošo pieprasījumu skaits ir vienāds ar caurlaidspēju pieprasījumos sekundē, kas reizināta ar pieprasījuma vidējo ilgumu.

Piemērs. 600 vienlaikus aktīvi lietotāji, no kuriem katrs izraisa pieprasījumu reizi 20 sekundēs, rada 30 pieprasījumus sekundē. Ja katrs pieprasījums ilgst 100 ms, serverim vidēji apstrādē ir tikai 3 pieprasījumi. Īstais izaicinājums ir citur: maksimumos un lēnajos pieprasījumos.

Ko iztur viens vCPU

Pieprasījums aizņem procesoru, kamēr tas skaitļo: izpilda kodu, vaicā datubāzi, veido atbildi. Tāpēc viens vCPU apstrādā ne vairāk kā 1000 ÷ t pieprasījumu sekundē, kur t ir viena pieprasījuma skaitļošanas laiks milisekundēs. Gaidīšanas laiks (ārējs API, disks) procesoru neaizņem, bet aizņem darba procesu.

Pieprasījuma veidsTipiskais skaitļošanas laiksUz vienu vCPU, aptuveni
Statisks fails vai lapa no kešatmiņasMazāk par 1 msVairāki tūkstoši pieprasījumu sekundē
WordPress lapa, ko apkalpo lapu kešatmiņa1 līdz 5 msVairāki simti sekundē
JSON API (Node.js, Go, FastAPI) ar indeksētu SQL vaicājumu5 līdz 20 ms50 līdz 200 sekundē
WordPress vai Laravel lapa, ko aprēķina katrā apmeklējumā100 līdz 300 ms3 līdz 10 sekundē
Atskaite, eksports, PDF ģenerēšanaNo 500 ms līdz vairākām sekundēmMazāk par 2 sekundē

Ar šiem lielumiem 30 API pieprasījumi sekundē ar 10 ms skaitļošanas aizņem 30 % no viena vCPU. Tie paši 30 pieprasījumi sekundē uz WordPress lapām bez kešatmiņas prasa 3 līdz 9 vCPU. Lapu kešatmiņa kalpo tieši tam, lai lapu pārceltu no tabulas ceturtās rindas uz otro.

Ko iztur atmiņa

Katru apstrādē esošu pieprasījumu apkalpo darba process (worker), un darba procesi aizņem atmiņu neatkarīgi no tā, vai tie strādā. Bieži tieši atmiņa, vairāk nekā procesors, nosaka paralēli apstrādājamo pieprasījumu skaitu:

Pastāvīgos savienojumus (websockets, reāllaika paziņojumi) skaita atsevišķi: tie ir atvērti visu laiku, patērē maz procesora un katrs dažus desmitus kilobaitu atmiņas. Node.js serveris tur tūkstošiem tādu dažos simtos MB.

Īstās šaurās vietas

Reālā lietojumprogrammā serveris reti sasniedz robežu tur, kur to gaida. Biežākie cēloņi tādā secībā, kādā tos meklēt:

  1. Lēns SQL vaicājums: trūkstošs indekss pārvērš 2 ms vaicājumu 2 sekunžu vaicājumā, kas aiztur darba procesu un savienojumu. PostgreSQL vidē to atklāj pg_stat_statements, MySQL vidē lēno vaicājumu žurnāls.
  2. Kaskādes vaicājumi (N+1 problēma): lapa, kas palaiž vienu vaicājumu katrai attēlotajai rindai, palaiž to simtiem.
  3. Sinhrons ārējs izsaukums: maksājumu vai mākslīgā intelekta API, kas atbild 3 sekundēs, bloķē sinhronu darba procesu uz 3 sekundēm.
  4. Smagas darbības pieprasījuma iekšienē: e-pastu sūtīšana, attēlu izmēru maiņa, PDF ģenerēšana, kas jāpārceļ uz uzdevumu rindu.
  5. Kešatmiņas trūkums: lapas, kas visiem apmeklētājiem ir vienādas, apkalpo no kešatmiņas, statiskos failus apkalpo tīmekļa serveris.

Pārbaudīt: slodzes tests

Aptuvenie lielumi dod pirmo izmēru; slodzes tests dod īsto. Princips: lietojumprogrammas kopijā simulēt arvien vairāk lietotāju un konstatēt brīdi, kad atbildes laiks strauji pasliktinās.

Terminālis: 50 savienojumi 30 sekundes, ar wrk
wrk -t2 -c50 -d30s --latency https://preprod.jusu-vietne.com/

Pilnam lietotāja ceļam (pieslēgšanās, pārlūkošana, meklēšana) k6 apraksta scenāriju JavaScript valodā un palielina slodzi pakāpeniski:

k6 skripts (test.js), palaiž ar: k6 run test.js
import http from 'k6/http';
import { sleep } from 'k6';

export const options = {
  stages: [
    { duration: '2m', target: 100 },
    { duration: '5m', target: 100 },
    { duration: '2m', target: 300 },
    { duration: '5m', target: 300 },
    { duration: '2m', target: 0 },
  ],
  thresholds: { http_req_duration: ['p(95)<500'] },
};

export default function () {
  http.get('https://preprod.jusu-vietne.com/');
  sleep(15);
}

Kad slodze pieaug

Secība, kas prasa vismazāk un dod visvairāk:

  1. Kešot to, ko var (lapas, fragmentus, vaicājumu rezultātus), un izlabot lēnos vaicājumus.
  2. Noregulēt darba procesu skaitu atbilstoši pieejamajai atmiņai un procesoram.
  3. Pāriet uz lielāku izmēru: vairāk vCPU un atmiņas, neko nemainot lietojumprogrammā.
  4. Novietot datubāzi atsevišķā serverī.
  5. Sadalīt lietojumprogrammu starp vairākiem serveriem aiz slodzes līdzsvarotāja.

Pirmie trīs soļi sedz lielāko daļu biznesa lietojumprogrammu, vietņu un API: vairāki simti vienlaikus aktīvu lietotāju ietilpst vienā labi noregulētā serverī.

Serveris, kas aug līdz ar jūsu lietotājiem

VPS Pro ir pieejams sešos izmēros uz Intel Xeon procesoriem, ECC atmiņas un spoguļotiem NVMe SSD, un jebkurā brīdī pāriet uz lielāku izmēru bez pārinstalēšanas. Visaptverošais atbalsts ir iekļauts: pastāstiet, cik lietotāju gaidāt palaišanas brīdī un pēc gada, un mēs ieteiksim izmēru; un, kad kāda lapa palēninās, mēs diagnosticējam un pasakām, kas jādara, no sistēmas līdz pat jūsu lietojumprogrammas kodam.

Skatīt VPS Pro

Biežāk uzdotie jautājumi

Cik lietotāju var apkalpot VPS ar 2 vCPU un 4 GB?

API vai lietojumprogrammai, kuras pieprasījumiem vajag 10 līdz 20 ms skaitļošanas, vairākus simtus vienlaikus aktīvu lietotāju. WordPress vietnei bez lapu kešatmiņas aptuveni simtu. Atšķirību nosaka katra pieprasījuma skaitļošanas laiks un kešatmiņa, tāpēc slodzes tests ir tā vērts.

Cik apmeklētāju dienā var uzņemt VPS?

Apmeklētāju skaits dienā pats par sevi pasaka maz: svarīgs ir maksimums. Lai pārietu no viena uz otru, izdaliet dienas apmeklējumus ar aktīvajām stundām, reiziniet ar skatīto lapu skaitu vienā apmeklējumā un pēc tam ar maksimuma koeficientu 3 līdz 5. 10 000 apmeklējumu 10 stundās, katrā 4 lapas, dod vidēji aptuveni 1 lapu sekundē un maksimumā 3 līdz 5.

Kā uzzināt, vai mans serveris ir pārslogots?

Trīs pazīmes: atbildes laiks pieaug līdz ar datplūsmu, procesora noslodze maksimālās slodzes stundās paliek virs 80 %, vai pieejamā atmiņa nokrītas tuvu nullei. Tīmekļa servera žurnālos tad parādās kļūdas 502 vai 504, un pieprasījumi gaida brīvu darba procesu.

Vai websockets maina aprēķinu?

Jā: websocket savienojums ir atvērts visu laiku. Tas patērē maz procesora un dažus desmitus kilobaitu atmiņas. Node.js serveris tur tūkstošiem tādu; procesoru noslogo nosūtītie ziņojumi, vairāk nekā atvērtie savienojumi.

Sazinieties ar mums