Suurten liitetiedostojen siirtäminen Palveluväylässä
Tässä artikkelissa kerrotaan suurten liitetiedostojen tiedonsiirrosta ja sen tehokkuuteen vaikuttavista tekijöistä Suomi.fi-palveluväylässä. Artikkeli käsittelee SOAP-liitetiedostojen siirtämistä, mutta samat yleisperiaatteet pätevät myös REST-liitetiedostojen siirtämiseen.
Artikkeli kuvaa Palveluväylän perustapausta: asiakasjärjestelmä lähettää liitetiedostot ensin omalle liityntäpalvelimelleen, josta ne lähetetään vastaanottavalle liityntäpalvelimelle ja sieltä edelleen vastaanottavalle asiakasjärjestelmälle. Palveluväylän suorituskykyä suurten liitetiedostojen siirtämisessä on testattu pilvipalveluita hyödyntäen. Testien tuloksena saadut mittauslukemat ovat viitteellisiä ja havainnollistavat Palveluväylän liitetiedostojen siirron suorituskykyprofiilia.
Tiedonsiirtotavat ja testauslaitteisto
Palveluväylässä suurten tietomäärien siirtämisessä suositellaan käytettävän liitetiedostoja. Palveluväylä tukee versiosta 6.9.x asti kahta liitetiedostojen siirtotapaa:
- SOAP with Attachments
- Message Transmission Optimization Mechanism with XOP.
SOAP with Attachments (SwA)
SOAP with Attachments on Palveluväylän alkuperäinen liitetiedostojen siirtotapa, joka on ollut tuettuna myös Palveluväylän aikaisemmissa versioissa.
Palveluväylässä SOAP with Attachments -siirrossa jokainen liitetiedosto lähetetään omana multipart-osionaan. Palveluväylä ei tue useiden liitetiedostojen lähettämistä yhden multipart-osion sisällä.
Liitetiedostojen siirtoon liittyvissä suorituskykymittauksissa on käytetty pääasiassa SOAP with Attachments -siirtotapaa.
Message Transmission Optimization Mechanism with XOP (MTOM)
Versiosta 6.9.x alkaen Palveluväylä tukee myös Message Transmission Optimization Mechanism -siirtotapaa.
MTOM ei liityntäpalvelinten näkökulmasta eroa merkittävästi SwA-siirtotavasta, eikä tehdyissä testimittauksissa havaittu merkittävää suorituskykyeroa siirtotapojen välillä. SwA-siirtotavalla tehtyjen tarkempien suorituskykymittausten havainnot pätevät siis myös MTOM-siirtotapaan.
Liitetiedostojen siirron testauslaitteisto
Liitetiedostojen siirtoa testattiin pääosin AWS-ympäristössä. Liityntäpalvelimina käytettiin AWS:n EC2-instanssin m4.large-malleja:
- suoritin: 2.4 GHz Intel Xeon® E5-2676 v3 (Haswell), 2 vCPU
- muisti: 8 Gt
- levy: 120 Gt classic/magnetic.
AWS:n ulkopuolella testauskäytössä oli suorituskyvyltään vastaavan tason liityntäpalvelimia.
Tutustu tarkemmin AWS:n EC2-instanssin tyyppeihin (englanniksi).Avautuu uuteen ikkunaan.
Suurten liitetiedostojen siirtonopeus Palveluväylässä
Palveluväylän siirtonopeutta (SwA) on testattu käyttämällä eri liitetiedostokokoja 1 Mt:n ja 30 Gt:n välillä. Kymmenien gigatavujen liitetiedostojen siirto ei ole Palveluväylän tyypillistä sanomaliikennettä, mutta siirtojen keston on huomattu säilyvän myös tällöin lineaarisena tiedostokokoon nähden. Käytännössä tämä tarkoittaa, että tiedonsiirtoon kuluva aika Palveluväylässä kasvaa tasaisesti tiedostokoon kasvaessa. Palveluväylän kautta siirrettäville liitetiedostoille ei siis ole varsinaista kokorajaa. Ainoat konkreettiset siirtoon vaikuttavat rajat ovat käytettävissä oleva aika ja levytila.
Testeissä liitetiedoston siirtämistä Palveluväylän kautta on verrattu ensisijaisesti suoraan SOAP-siirtoon asiakasjärjestelmien välillä. Näiden siirtotapojen kokonaiskeston suurimpana erona on liityntäpalvelimilla tapahtuva viestiliikenteen prosessointi. Esimerkiksi liikenteen salaaminen ja varmentaminen aiheuttavat viestin läpimenolle prosessointiviivettä, joka kasvaa viestin koon mukaan. Mikäli liityntäpalvelinten suorituskyky on suunniteltu ympäristöönsä nähden oikein, niiden prosessointiviive kasvaa tasaisesti liitetiedostojen koon kasvaessa.
Prosessoinnin aiheuttaman viiveen vaikutus voidaan pitää kurissa liityntäpalvelinten riittävällä resursoinnilla. Tällöin suurtenkin liitetiedostojen siirtäminen Palveluväylän kautta onnistuu suhteellisen tehokkaasti. Mittauksissa erikokoisilla liitetiedostoilla ja testikonfiguraatioilla suurten liitetiedostojen siirto Palveluväylän kautta oli normaalitilanteessa keskimäärin noin 25 % suoraa SOAP-siirtoa hitaampaa. Mikäli liityntäpalvelinten viestiliikenteen prosessointi hidastui riittämättömän resursoinnin vuoksi, prosessointiviiveen merkitys kokonaissiirtoajassa kasvoi ja suorituskykyero nousi selvästi keskimääräistä suuremmaksi.
Liityntäpalvelinten resursoinnin vaikutukset liitetiedostojen siirtämiseen
Kuvan 1 mukaisessa konfiguraatiossa lähettävä liityntäpalvelin striimaa asiakasjärjestelmältä saamansa pyynnön ja mukana tulevat liitetiedostot vastaanottavalle liityntäpalvelimelle. Vastaanottava liityntäpalvelin tallentaa vastaanottamansa datavirran levypohjaiseen välimuistiin. Levyvälimuisti tallentaa kaikki viestin mukana tulevat liitteet yhteen väliaikaistiedostoon. Väliaikaistiedosto poistetaan, kun tiedoston sisältö on lähetetty eteenpäin vastaanottavalle asiakasjärjestelmälle.

Keskusmuistin merkitys
Liitetiedostojen siirron testaamiseen käytettiin 8 Gt:n muistilla varustettuja palvelimia, joilla muistin ei havaittu muodostavan merkittävää suorituskykyrajoitetta viestinkäsittelylle. Palveluväylän liityntäpalvelinten teknisissä suosituksissa kehotetaan mitoittamaan liityntäpalvelimen muistiasetukset kuormituksen mukaan. Erityisen vaativissa siirto-olosuhteissa muistin lisäämistä kannattaakin harkita, mutta mittausten perusteella se ei ole tärkeimpiä suurten liitetiedostojen siirtonopeuteen vaikuttavia tekijöitä.
Levytilan ja levyn nopeuden merkitys
Levypohjaisen välimuistin myötä vastaanottavan liityntäpalvelimen vapaana oleva levytila on avainasemassa liitetiedostojen siirron onnistumisessa. Mikäli yksittäisen viestin mukana lähetettävät liitetiedostot ovat niin suuria, ettei levyvälimuistin niistä luoma väliaikaistiedosto mahdu palvelimen levylle, liitetiedostojen lähettäminen epäonnistuu vastaanottovaiheessa.
Vastaanottavan liityntäpalvelimen käyttämä levypohjainen välimuisti voi vaikuttaa myös liitetiedostojen kokonaissiirtonopeuteen. Niinpä liityntäpalvelinten käyttämän levymuistin nopeus tulee ottaa huomioon tiedonsiirron kapasiteettia suunniteltaessa.
Esimerkiksi siirrettäessä 1 Gt:n liitetiedosto 52 Mb/s -verkossa saatiin eri levynnopeuksilla seuraavat tulokset:
Levyn keskimääräinen lukunopeus | Siirtoaika, suora SOAP (s) | Siirtoaika, Palveluväylä (s) | Palveluväylä suoraa SOAP-siirtoa hitaampia ~ |
|---|---|---|---|
16 Mt/s | 164 | 207 | 26 % |
72 Mt/s | 172 | 191 | 11 % |
Taulukko 1. Levyn nopeuden merkitys tiedonsiirrossa.
Nopeammalla levyllä saatiin noin 15 prosenttiyksikön suorituskykyparannus jo 1 Gt:n liitetiedostokoolla. Keskimäärin muutos paransi Palveluväylän siirtonopeutta kaikkien testattujen tiedostokokojen osalta noin 17 prosenttiyksikköä.
Suoritinkapasiteetin merkitys
Palveluväylän kautta tapahtuva tiedonsiirto vaatii suoraan SOAP-siirtoon verrattuna lisäprosessointia liityntäpalvelimilla. Dataa pyritään käsittelemään heti, kun sitä vastaanotetaan verkosta. Tämä tarkoittaa sitä, että liityntäpalvelinten kuormitus suuria liitetiedostoja siirrettäessä kasvaa verkon siirtonopeuden kasvaessa. Tällöin liityntäpalvelimen suoritinkapasiteetti voi nousta yhdeksi tärkeimmistä tiedonsiirtonopeutta rajoittavista tekijöistä asiakasjärjestelmien välillä.
Testeissä havaittiin, että suuria liitetiedostoja nopeilla verkkoyhteyksillä siirrettäessä liityntäpalvelinten prosessorikuorma kasvoi voimakkaasti. Testin ääritilanteessa suoritinkapasiteetti rajoitti siirtoa niin, että prosessointiviiveen osuus kokonaissiirtoajasta kasvoi rajusti ja tiedonsiirto Palveluväylää pitkin oli selkeästi suoraa SOAP-siirtoa hitaampaa.
Siirrettäessä 1 Gt:n liitetiedostoa saatiin seuraavat tulokset:
Keskimääräi-nen suoritin-kuorma | Verkon nopeus | Siirtoaika, suora SOAP (s) | Siirtoaika, Palveluväylä (s) | Palveluväylä suoraa SOAP-siirtoa hitaampi ~ |
|---|---|---|---|---|
0,15 | 175,6 Mb/s | 43,6 | 55,4 | 27 % |
1 | 568 Mb/s | 16,6 | 71 | 328 % |
Taulukko 2. Suoritinkuorman merkitys tiedonsiirrossa.
Tuloksista nähdään, että nopeampi verkko aiheuttaa suorittimelle niin suuren kuorman, että liityntäpalvelimen tiedonsiirto hidastuu selvästi sekä suoraan SOAP-siirtoon että hitaamman verkkoyhteyden kanssa Palveluväylän yli tehtyyn siirtoon verrattuna. Mittausten perusteella siirto-olosuhteisiin riittämätön suoritinkapasiteetti nouseekin merkittävimmäksi liitetiedostojen siirron suorituskykyrajoitteeksi Palveluväylässä.
Yhteenveto
Yllä esitettyjen havaintojen pohjalta voidaan todeta, että suurten tietomäärien tehokkaassa siirtämisessä tärkeintä on Palveluväylään liitettyjen liityntäpalvelinten resursointi käyttöolosuhteisiin sopivaksi. Nopea verkko ja suuria liitetiedostoja vaativat palvelut asettavat korkeat vaatimukset myös liityntäpalvelimen prosessointi- ja levynopeudelle. Liitetiedostojen koko ei kuitenkaan itsessään rajaa Palveluväylän käyttöä, sillä tiedostokoolle ei ole mitään Palveluväylästä riippuvaa ylärajaa. Levyvälimuistista johtuen lähetettävien liitetiedostojen tulee kuitenkin mahtua kokonaisuudessaan vastaanottavan liityntäpalvelimen levylle.
Palveluväylän kautta tehtävä liitetiedostojen siirto sisältää suoraan siirtoon nähden prosessointiviiveen. Viive vaikuttaa pitkälti siihen, miten suorituskykyistä siirto Palveluväylää pitkin on suoraan siirtoon verrattuna. Erityisesti liityntäpalvelimen suoritinkapasiteetti vaikuttaa selvästi siirtoviiveen muodostumiseen. Vastaanottavan liityntäpalvelimen hidas levymuisti voi johtaa tiedonsiirron lievään hidastumiseen, kun taas liityntäpalvelimen suoritinkapasiteetin riittämättömyys voi nostaa prosessointiviiveen selvästi varsinaista siirtoviivettä suuremmaksi tekijäksi kokonaissiirtoaikaa ajatellen. Tällöin Palveluväylän kautta tehtävän liitetiedostosiirron tehokkuus romahtaa suoraan siirtoon verrattuna. Siirto-olosuhteisiin riittävällä suoritinkapasiteetilla prosessointiviive jää kuitenkin siirtoviivettä pienemmäksi, jolloin Palveluväylän suorituskyky säilyy hyvänä.