Kirjoittaja Aihe: Palvelimet : Apache ja isot ja pienet siirrot ?  (Luettu 4548 kertaa)

HannuTapio

  • Käyttäjä
  • Viestejä: 1264
  • OpenJDK + JavaScript testailuu ja säätelyy.
    • Profiili
    • Hannun netti internet sotaisa aihe lautapelejä.
Hei,

Minulla on Apache palvelimessa, minulla on sekä TCP peli paketti että kuva siirtoja.

Minä mietin että kuinka minä tämän Apachen voisin säätää, niin, että, se huomioi kaikki siirrot, niin, kuvat kuin pelien tcp.

Minä en tiedä onko tämä automaattinen toiminta apachessa, mutta, mitenkä sellainen tilanne menee, jos on vaikka 20 tcp peli pakettia siirrossa, vaikka 1k jokainen ja sitten on kuva siirtymässä vaikkapa 1000k.

Voiko jotenkin apachen säätää, että, se osaisi siirtää kaikkia 21 konnektia, vaikkapa, niin, että vuoron perään 512 byteä, taikka jotain noin, kenties 1k kerralla aina jokaista vuoronperään.

En tiedä onko tämä automaattista apachessa, mutta, kuinka siirrot järjestäytyy kun on 20 pientä 1k siirtoa ja yksi iso 1000k.

??

--
Suomalainen Linux netti lautapelejä indie .. ( Gimp, Inkscape, Netbeans, Audacity ) ..
Blogi - [ https://lautapelimestari.com ]
Pelisivut - [ https://lautapelisivusto.com | https://hannunsankarit.com | https://lautapelikenraalit.com ]
--

nm

  • Käyttäjä
  • Viestejä: 16430
    • Profiili
Vs: Palvelimet : Apache ja isot ja pienet siirrot ?
« Vastaus #1 : 30.05.18 - klo:12.44 »
Voiko jotenkin apachen säätää, että, se osaisi siirtää kaikkia 21 konnektia, vaikkapa, niin, että vuoron perään 512 byteä, taikka jotain noin, kenties 1k kerralla aina jokaista vuoronperään.

En tiedä onko tämä automaattista apachessa, mutta, kuinka siirrot järjestäytyy kun on 20 pientä 1k siirtoa ja yksi iso 1000k.

Apache palvelee pyyntöjä rinnakkaisissa säikeissä, eli isot siirrot etenevät käytännössä samanaikaisesti. Jos asiaa haluaa tarkastella matalammalla tasolla, pienet 1 kt pakettien siirrot järjestyvät verkkorajapinnoissa peräkkäisiksi paketeiksi, ja isot siirrot lomittuvat sinne väliin. Esim. Ethernetissä paketin maksimikoko (MTU) on yleensä 1500 tavua, eli käyttöjärjestelmä pilkkoo rinnakkaisen ulos lähtevän liikenteen pieniksi paloiksi ja lähettää sen eteenpäin pakettisarjana käytössä olevan skedulointialgoritmin mukaisesti. Palvelun 20 käyttäjän näkökulmasta Apache vastaa kuitenkin kaikille käytännössä samanaikaisesti.

HannuTapio

  • Käyttäjä
  • Viestejä: 1264
  • OpenJDK + JavaScript testailuu ja säätelyy.
    • Profiili
    • Hannun netti internet sotaisa aihe lautapelejä.
Vs: Palvelimet : Apache ja isot ja pienet siirrot ?
« Vastaus #2 : 30.05.18 - klo:12.55 »
Ok,

Kiitos, sitä ei sitten tarvitse miettiä sen enempää.

Mutta, hieno homma, minä hieman epäilinkin että apache osaa hoitaa homman oikein, mutta, piti silti kysyä.

Kiitos.

--
Suomalainen Linux netti lautapelejä indie .. ( Gimp, Inkscape, Netbeans, Audacity ) ..
Blogi - [ https://lautapelimestari.com ]
Pelisivut - [ https://lautapelisivusto.com | https://hannunsankarit.com | https://lautapelikenraalit.com ]
--

HannuTapio

  • Käyttäjä
  • Viestejä: 1264
  • OpenJDK + JavaScript testailuu ja säätelyy.
    • Profiili
    • Hannun netti internet sotaisa aihe lautapelejä.
Vs: Palvelimet : Apache ja isot ja pienet siirrot ?
« Vastaus #3 : 30.05.18 - klo:17.11 »
Peli TCP,

Minä vielä hieman kysyn, voiko tätä liikennettä säätää ?

Voinko määrätä esim. että, paketit siirtyvät kaistalla, siis, nämä 20 pientä 1k ja 1 iso 1000k, esim. niin, että, ne liikkuvat 512 byteä kerrallaansa.

Minun peli paketit ovat yleensä jotakin 200 byteä, ja sitten on nämä kuvat jotka liikkuvat, olisi mukava jos peli paketit, liikkuisivat tosi nopeasti, vaikka kuvia sitten olisikin samalla liikenteessä mukana.

Jos minulla on monta kuvaa ja ne pätkitään 1500 byten pätkiin, niin, tämä hidastaa tarpeettomasti, tcp liikennettä, olisi mukava jos voisin säätää jotain 256 byteä - 512 byteä, aina yhtä tiedostoa kerrallaansa ?

Jos laitan nämä kuva lataukset samaan palvelimeeni, niin, yksi pelaaja lataa peliä ladatessa jotain 10 - 20 kuvaa, ja jos pelaajia kerralla lataa vaikka 20, niin tämä on 200 - 400 kuvaa, jos tämä apache yksi siirto paketti on tuo 1500 byteä, niin, tämä on 1500 * 400, on 600 000 byteä, on 600k, tämä on melkein sekunnin kahdeskymmenes palvelin linja tehoista.

Jos aina yhtä tiedostoa siirretään vain 256 - 512 byteä, niin, nuo peli siirrot menevät nopeasti sitten.

Onnistuuko ?

--
« Viimeksi muokattu: 30.05.18 - klo:17.19 kirjoittanut HannuTapio »
Suomalainen Linux netti lautapelejä indie .. ( Gimp, Inkscape, Netbeans, Audacity ) ..
Blogi - [ https://lautapelimestari.com ]
Pelisivut - [ https://lautapelisivusto.com | https://hannunsankarit.com | https://lautapelikenraalit.com ]
--

nm

  • Käyttäjä
  • Viestejä: 16430
    • Profiili
Vs: Palvelimet : Apache ja isot ja pienet siirrot ?
« Vastaus #4 : 30.05.18 - klo:17.51 »
Minä vielä hieman kysyn, voiko tätä liikennettä säätää ?

Voinko määrätä esim. että, paketit siirtyvät kaistalla, siis, nämä 20 pientä 1k ja 1 iso 1000k, esim. niin, että, ne liikkuvat 512 byteä kerrallaansa.

Minun peli paketit ovat yleensä jotakin 200 byteä, ja sitten on nämä kuvat jotka liikkuvat, olisi mukava jos peli paketit, liikkuisivat tosi nopeasti, vaikka kuvia sitten olisikin samalla liikenteessä mukana.

Jos minulla on monta kuvaa ja ne pätkitään 1500 byten pätkiin, niin, tämä hidastaa tarpeettomasti, tcp liikennettä, olisi mukava jos voisin säätää jotain 256 byteä - 512 byteä, aina yhtä tiedostoa kerrallaansa ?

Jos laitan nämä kuva lataukset samaan palvelimeeni, niin, yksi pelaaja lataa peliä ladatessa jotain 10 - 20 kuvaa, ja jos pelaajia kerralla lataa vaikka 20, niin tämä on 200 - 400 kuvaa, jos tämä apache yksi siirto paketti on tuo 1500 byteä, niin, tämä on 1500 * 400, on 600 000 byteä, on 600k, tämä on melkein sekunnin kahdeskymmenes palvelin linja tehoista.

Jos aina yhtä tiedostoa siirretään vain 256 - 512 byteä, niin, nuo peli siirrot menevät nopeasti sitten.

Kyllä, tuossa korkean kuorman skenaariossa siis viive varsinaisten pelipakettien välissä olisi keskimäärin 50 ms:n luokkaa. Periaatteessa pienemmällä MTU:lla latenssia tosiaan saisi pienennettyä, mutta toisaalta silloin headerien osuus jokaisesta paketista kasvaa ja käytettävissä oleva siirtokaista kapenee.

Sanoisin, että asiaa kannattaa pohtia siinä vaiheessa, kun palvelussa on oikeasti noin paljon kuormaa, eli kymmenet käyttäjät lataavat isoja kuvia samanaikaisesti. Silloin parempi tapa optimoida latenssia olisi rajoittaa samanaikaisesti siirrettävien staattisten resurssien (isojen kuvatiedostojen) määrää asiakaskoodin ja/tai Apachen säädöillä, tai siirtää tuollainen data nopeaan CDN:ään, kuten isot pojat tekisivät: https://aws.amazon.com/cloudfront/