EXAMin suorituskyvystä (2019 ja 2020)

  • Joulukuussa 2019 ja keväällä 2020 todettiin EXAMissa (versio 5.1.x) suorituskykyongelmia tilanteissa, joissa paljon opiskelijoita aloitti täysin samanaikaisesti tenttisuorituksia. Ongelmia ilmeni siten, että samanaikaisesti alkaneista tenttisuorituksista osa ei latautunut oikein opiskelijan koneelle tai EXAMin sivut latautuivat vaillinaisesti. Pahimmissa tapauksissa EXAMin käyttö estyi tilapäisesti kaikilta EXAMin käyttäjiltä.
  • Ongelmatilanteiden tutkimuksissa selvisi mm. että samanaikaisesti alkavat tenttisuoritukset käyttivät loppuun EXAMin backend-ohjelmistolle varatut tietokantayhteydet. Tenttisuorituksen alkaessa palvelimella tehtävä opiskelijan tentin "rakentaminen" on monimutkainen prosessi, joka saattaa kestää, ja jos tenttisuorituksia alkaa paljon yhtäaikaisesti, niin tietyt resurssit voivat loppua kesken. Myös tentin monimutkaisuudella (esim. tenttiin arvotaan paljon monivalintakysymyksiä) on vaikutuksia siihen, kuinka raskas prosessi tentin rakentaminen palvelimella on.
  • CSC:n käyttöpalveluissa tehtiin ohjelmallisesti suorituskykytestejä (gatling.io ohjelmalla), jolla testattiin Examin toimintaa suuremmilla yhtäaikaisilla tenttisuoritusten alkamismäärillä. Esimerkiksi kun yritettiin aloittaa 50 tenttisuoritusta samanaikaisesti, niin näistä 24 onnistui. (Tämä testitulos saatiin CSC:n käyttöpalveluiden EXAM palvelimella jossa virtuaalipalvelimella käytössä 2 cpu:ta ja 4GB muistia. Tietokantayhteyksien maksimimääräasetuksena oli 10.)
  • Suorituskykytestien lisäksi selvitettiin mahdollisuuksia kehittää EXAMin backend-ohjelmiston konfiguraatiota ja toteutusta suorituskyvyn parantamiseksi.
  • Testien ja selvitysten perusteella tehtiin EXAMin backendiin kehitystyötä sekä optimoitiin EXAMin tietokantayhteyksien määrää. Näiden jälkeen tehdyissä uusissa testeissä päästiin CSC:n käyttöpalveluissa seuraavan taulukon osoittamiin tuloksiin. Onnistuneet yhtäaika alkavat tenttisuoritukset tarkoittaa sitä, että testissä yritettiin aloittaa yhtäaikaa ko. määrä EXAM-tenttejä, joista kaikkien aloitus onnistui ongelmitta.


    CPU

    RAM (GB)

    Tietokantayhteyksien maksimimäärä

    Onnistuneet yhtäaikaa alkavat tenttisuoritukset

    CSC:n käyttöpalveluiden peruspalvelin

    2

    4

    30

    190

    CSC:n käyttöpalveluiden laajennettu palvelin

    4

    8

    30

    242

    Exam 5.3.0 version suorituskykytestien tuloksia eri palvelinvaihtoehdoilla

Huomioita suorituskykytesteistä ja tehdyistä suorituskykyparannuksista

  • Testejä suoritettiin CSC:n käyttöpalveluiden palvelinkonfiguraatiolla, jossa samalla virtuaalipalvelimella ajetaan Apache web-palvelinta, EXAM-ohjelmistoa sekä PostgreSQL-tietokantaa. Testitulokset eivät siis välttämättä päde EXAM-asennuksissa, joita suoritetaan tästä poikkeavalla palvelinarkkitehtuurilla esim. jos EXAM-ohjelmisto ja tietokanta ovat hajautettuna eri palvelimille.
  • Testituloksista ei voi suoraviivaisesti tehdä johtopäätöstä, että jos korkeakoululla on tenttitiloissaan 190 tenttipaikkaa, ja niissä kaikissa aloitetaan tentti samanaikaisesti, niin EXAMin peruspalvelimen kanssa ei voisi tulla ongelmia tenttien aloituksessa. Esimerkiksi käytännössä EXAM-palveluissa on todennäköisesti muitakin käyttäjiä (esim. opettajia arvioimassa tenttisuorituksia tai opiskelijoita tekemässä tenttivarauksia), jotka osaltaan aiheuttavat EXAM-palvelimelle lisäkuormitusta.
  • EXAMin backend-ohjelmistoon tehdyillä suorituskykyparannuksilla on vaikutuksia myös muualle kuin yhtäaikaisten tentin aloittajamäärien kasvuun. Nyt jos yhtäaikaiset tenttijämäärät nousevat lähelle tai ylittävät palvelimen suorituskykyrajan, niin EXAMin toiminta ei todennäköisesti enää hyydy tai katkea kaikilta käyttäjiltä, vaan ongelmia todennäköisesti näkyy vain uusien tenttien aloittajilla, joilla tentin aloittaminen voi hidastua merkittävästi tai estyä väliaikaisesti. Kun palvelimen kuormitus taas laskee, niin uusien tenttien aloittaminen mahdollistuu normaalisti.

fixedConnectionPool tietokanta-asetus

  • EXAMin versiossa 5.3.0 EXAMin konfiguraatiotiedostoon tuli asetus fixedConnectionPool , jonka oletusarvona on 10. Käytännössä tuon asetuksen avulla ylläpito voi mahdollisesti parantaa EXAMin suorituskykyä. Asetus vaikuttaa EXAMin backend-ohjelmiston tietokantayhteyksien määrään. CSC:n käyttöpalveluissa tehdyissä testeissä käyttöpalveluiden EXAMien palvelinkokoonpanoilla ja -arkkitehtuurilla parhaaseen suorituskykyyn on päästy asetuksen arvolla 30. (CSC:n EXAM käyttöpalvelveluissa virtuaalipalvelimen käytössä 2 cpu:ta ja 4GB RAM muistia tai virtuaalipalvelimen käytössä 4cpu:ta ja 8GB muistia. Samalla virtuaalipalvelimella ajetaan Apache web-palvelinta, EXAM-ohjelmistoa sekä PostgreSQL-tietokantaa). Se mitä korkeakoulujen kannattaa valita tuohon asetukseen riippuu varmastikin ko. korkeakoulun EXAM-palvelimen/palvelimien palvelinkokoonpanoista ja -arkkitehtuurista, jolloin paras asetus saattaa löytyä vain kokeilemalla/testaamalla EXAMin toimintaa eri asetuksilla.
  • Teknisempää taustoitusta tietokantayhteyksien määrän säätämisestä https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing.

EXAMin suorituskykytestit 2021

  • CSC:n EXAM käyttöpalveluissa tehtiin uusia suorituskyky/stressitestejä keväällä ja kesällä 2021. Näiden yhteydessä huomattiin uutena EXAM-palvelimen pullonkaularesurssina Apache web-palvelimen workerit. Testailun ja Apachen eri worker-moduuleihin perehtymisen perusteella päädyttiin käyttämään Apachen prefork Multi-Processing Module -moduulia (mpm).
  • Apachen workereiden määrän vaikutusta testattiin Examin versiolla 5.3.2 Exam  old.exam.csc.fi palvelimella, joka virtuaalipalvelin missä 4 CPU:ta 8 GB RAM muistia. Testejä tehtiin workereiden määrällä 1000 ja 800. (Tällä sivulla aiemmin mainittuun fixedConnectionPool tietokanta-asetukseen oli testeissä valittuna 30).
  • Testit suoritettiin gatling.io ohjelmalla kuten 2020 suoritetut testit oli suoritettu.
  • Alla testituloksia kun samanaikasesti yritettiin koneellisesti aloittaa tietty määrä tenttisuorituksia. Yritetyt tenttisuoritukset sarakkeessa siis kuinka montaa tenttisuoritusta yritettiin käynnistää ja Onnistuneet tenttisuoritukset sarakkeessa kuinka monta näistä onnistui testiohjelmiston mukaan. Testiohjelmiston mukaan kaikissa testeissä osa tenttisuoritusten aloittamisista epäonnistui. Ei saatu kuitenkaan selville miksi/mihin ne epäonnistuivat.
  • Huomiona, että Exam-ohjelmistoon ei tehty suorituskykyyn liittyviä muutoksia verrattuna aiempiin, kevään 2020 testeihin. Eli suorituskykytestien parantuneiden lukujen taustalla ainoastaan tässä mainitut Apachen konfiguraatiomuutokset.


WorkeritYritetyt tenttisuorituksetOnnistuneet tenttisuoritukset
1000900803
1000800716
1000700660
1000600566
1000500494
1000400391
1000300286
800700634
800600580
800500486
800400383
800300297



Tässä vielä testeissä käytetyt asetukset Apachen httpd.conf -tiedostossa:

  •  1000 workerilla asetukset näin:
<IfModule mpm_prefork_module>
       StartServers              4
       MinSpareServers          20
       MaxSpareServers         100
       ServerLimit            1000
       MaxRequestWorkers       1000
       MaxConnectionsPerChild 3000
</IfModule>
  •  800 workerilla asetukset näin:
<IfModule mpm_prefork_module>
       StartServers              4
       MinSpareServers          20
       MaxSpareServers         100
       ServerLimit             800
       MaxRequestWorkers       800
       MaxConnectionsPerChild 2000
</IfModule>
  •  joiden lisäksi käytettiin näitä asetuksia:


KeepAlive On

MaxKeepAliveRequests 500

KeepAliveTimeout 5



  • No labels