LV RU EN
Katastrofāla veiktspēja
2015/12/01   Raivis Spēlmanis

Kad pieņēmām no klienta uzturēšanā kādu sezonāli noslogotu portālu, mūsu galvenais uzdevums bija nodrošināt, lai neatkārtotos iepriekšējā sezonā piedzīvotā katastrofa, kur vissvarīgākajā brīdī portāls ilgstoši nebija pieejams.

Sākam izpēti

Izpētījām portālu un samērā ātri identificējām dažas problemātiskās vietas:

Šie ir lieliski kandidāti, laiks pielikt slodzi.

Uzliekam slodzi

Nodefinējam dažus GET un POST pieprasījumus iepriekš minētajiem scenārijiem un ar ApacheBench imitējām pavisam mērenu slodzi : 10 paralēlas pieprasījumu plūsmas.

Slodzes laikā pierakstīsim galvenos raksturlielumus – reakcijas laikus, caurlaides spēju, CPU noslodzi, atmiņas patēriņu utt. Šim mērķim izmantojam New Relic izstrādāto monitoringa rīku. Tas ir samērā ērts un pieraksta visai detalizētu informāciju, tikai reizēm varētu vēlēties lielāku stabilitāti un uzticamību.

Reakcijas laiks : 36 sekundes uz pieprasījumu

Šie vienkāršie testi atklāja katastrofālu ainu:

  • pdf failu ģenerēšanai vidējais rekcijas laiks pieauga ~10 reizes no ~3s uz 36s!

  • caurlaides spēja visiem resursiem bija tikai pāris simti pieprasījumi minūtē

  • daži testi uzrādīja fantastisku 7-15k caurlaides spēju, bet tikai tāpēc, ka lielākā daļa pieprasījumu nokrita ar kļūdu (acīmredzami dēļ noslodzes!) un visa biznesa loģika vienkārši nenostrādāja!

Pāris simti pieprasījumi minūtē un serveris ir ciet… Šim portālam maksimumstundās minūtes laikā varētu būt arī 5000 apmeklējumi!