Articles

Lataa sovelluksesi Siegellä

heinäkuu 2019

tag(s): rails_performance • rails • programming
Reading time: 8 min
  • Dumping unique URL into a text file
  • Vising all of those pages piiritystestissä
  • lisäresurssit

viime kerralla kaivoin Apache benchmarkin avulla suoritustestausta sivulle, joka vaatii tunnistautumisen päästäkseen sisään.

tänään selvitämme, miten siege: n avulla voi käydä sivuillamme monissa ainutlaatuisissa URL-osoitteissa ja saada vertailukohtia tästä prosessista. Aion seuraavaksi selvittää suorituskyvyn profilointi Datadog, ja nämä kolme työkalua yhdessä, meidän pitäisi olla valmiita tekemään joitakin mielekkäitä parannuksia sovellukseemme.

tämä julkaisusarja on suora tulos Nate Berkopecin The Complete Guide to Rails-suorituskyvystä, apunaan hänen screencasts, sekä Steve Grossin Load Testing Rails-Sovellukset Apache Bench, Siege ja JMeter. Näillä resursseilla varustettuna ja jättiläisten hartioilla seisoen lähdetään.

piirityksen kuvaus:

Siege on http-kuormitustestaus-ja benchmarking-apuohjelma. Sen tarkoituksena oli antaa web-kehittäjien mitata koodiaan pakon edessä nähdäkseen, miten se kestää ladata internetiin. Siege tukee perustodennusta, evästeitä, HTTP -, HTTPS-ja FTP-protokollia. Sen avulla sen käyttäjä osuma palvelimen konfiguroitavissa määrä simuloituja asiakkaita. Asiakkaat piirittävät palvelinta.”

piirityksen voi saada numerolla brew install siege.

käytän sitä, koska se voi ajaa listan antamistasi URL-osoitteista. Kuvittele, että sovelluksesi on kauppa, ja siinä on muutama tuhat tuotetta. Jokaisella tuotteella pitäisi olla yksilöllinen URL, jotain , tai ehkä . Tämä product-guid varmistaa, että sinulla voi olla ainutlaatuisia URL-osoitteita, vaikka on olemassa kaksi tuotetta, joilla on sama tuotenimi.

kun tiedät, mitä tietokannassasi on, voit helposti yhdistää product-guid ja product-name, kiinnittää sen : n loppuun ja keksiä hakemukseesi luettelon sadasta tai tuhannesta tai kymmenestätuhannesta yksilöllisestä tuotteen URL-osoitteesta. Jos tallentaisit nämä tekstitiedostoon ja kävisit joka sivulla mahdollisimman nopeasti, – tämä voisi näyttää joltain hyvältä stressitestiltä.

Dumping unique URL into a text file #

you ’ ll probably started working in a rails console session, to figure how to access the URL scheme just right.

käynnistin konsolin ja menin sisään:

etsin dev-tietokannastamme tilin, jossa on paljon dataa; tili, jonka tunnus on 4887, on QA-automaatioon liittyvä tili, ja siinä on paljon dataa.

campaign.to_param näin rakennamme URL – osoitteet kampanjoistamme-se vain yhdistää guid: n asiakkaan toimittaman title – merkkijonon kanssa ja soittaa .parameterize sille. Tätä kampanjaerää varten ne luodaan ohjelmallisesti automatisoidulla LAADUNVARMISTUSTESTIOHJELMALLA.

kun olet valmis, saatat nähdä jotain tällaistaall_campaign_urls.txt:

käymällä kaikilla noilla sivuilla Piiritystestissä #

niin, voit siege --help ja nähdä lipun läpimenoon tiedostossa:

jo tiedän, että tarvitsemme --file, ja --header, koska meidän on väärennettävä todennetut istunnot lähettämällä joitain evästeitä, prosessi, jolle hahmotin viimeksi

--get lippu näyttää hyödylliseltä:

Hanki, vedä HTTP-otsikot alas ja Näytä tapahtuma. Suuri sovelluksen virheenkorjaus.

niin, kirjaudutaan sisään QA-tilinämme. Koska hoidan tätä paikallisesti, löydän siihen liittyvän sähköpostiosoitteen DB: stä. En tiedä salasanaa, tietenkään, mutta voin pakottaa paikallisen salasanan uudelleen, napata sähköpostin Mailcatcher, ja asettaa sen mitä tahansa salasanaa Haluan.

merkitään nämä otsikot.

voimme tehdä kiharatestipyynnön pipareilla. Kun teen sen

$ curl -v http://localhost:3000/account/campaigns/dd4dfb48aa-dec-05-drive-by-test

odotan sivun tulevan takaisin, ei uudelleenohjausta /users/sign_in

miltä odotan epäonnistuneen todennuksen näyttävän:

evästeet:

_ts_session_id: c86fd1fe38d7a6c56ce1ef5990045057fd827a2c5655094bcce3748d6ee6d3e4: ImRhMDY1YjdjYjMwNGNjNWUxNzFkNDhjOGQ0YzA0OTIwIg%3D%3D--98c228cb35af1a269ee894c22540b81848e2ed09

ja me teemme bisnestä:

Huomaatko ne tilakoodit 200? Voin tail -f log/development.log ja nähdä kaiken toiminnan, mikä osoittaa, että lähetetyt evästeet liittyvät todennettuun käyttäjään.

ensimmäiseksi huomaan, että tuntuu, että nämä ovat äärimmäisen pitkiä sivukuormausaikoja.

I ’ m having Siege load about 162 different URL. Kun suoritat siege oletusasetuksilla, se ajaa 20 samanaikaista käyttäjää. Tämä tuntui olevan vähän liikaa siihen, mitä minun localhost kestäisi, joten yritin pudottaa samanaikaisten käyttäjien määrää ensin kahteen käyttäjään, sitten yhteen.

jos haluat määrittää samanaikaisten käyttäjien määrän, lisää vain --concurrent=NUM – lippu. Olin edelleen tulvii lähtö, joten pudotin samanaikaiset käyttäjät 1 ja poistaa kaikki, mutta 20 sivua luettelosta sivuja ladata. Annoin sille time lipun 60 sekuntia, samoin: -t 60s

kun kaikki on sanottu ja tehty, näet siege tekemässä joukon ajastettuja GET pyyntöjä, kuten näin:

lopulta kaikki asettuu, ja saat yhteenvedon kuormitustestistä:

Okei, tämä on siistiä, Josh, mutta miten ihmeessä voin tehdä mitään hyödyllistä tällä?

suuri kysymys! Sen aika nähdä, missä sovelluksemme viettää suurimman osan ajastaan, oikeassa maailmassa. Voisimme tehdä enemmän benchmarking paikallisesti, mutta tietenkin real-world data, kerätty todellisia ihmisiä vuorovaikutuksessa todellisen sovelluksen tuotannossa on hyödyllisin tietolähde.

siksi kirjoitan pian olen kirjoittanut siitä, miten rails-sovelluksesta saa hyödyllistä dataa Datadogiin!

Vastaa

Sähköpostiosoitettasi ei julkaista.