graalvm native image - load tests

1 minute read

xurl projesinin native image’ini olusturup calistirmayi basarmis, kucuk bir load test yapma ihtiyacindan bahsetmistik.

locust framework’u kullanarak minimal bir load test case’i hazirladim. locust, python ile gelistirilmis, yeterince guclu ve yetenekli, kolay erisilebilir, ucretsiz bir load test framework’u. diger secenekler ile kiyaslayip kendisiyle hizlica bir cozum uretebilecegimi dusunerek tercih ettim.

locust’un distributed load generating gibi muhtesem yetenekleri var, olabilir. bizim paramiz yok. bu nedenle testleri local ortamda gerceklestirdik.

test ortami

testleri maalesef local ortamda gerceklestirdim. ortamimiz su speclere sahip:

  • amd ryzen 5 3600x cpu
  • 32gb ram
  • archlinux

ayni makine uzerinde postgres, redis, app instancelerimiz (ayrica load testing kendisi) herhangi bir resource management olmadan kosuyor.

concurrent user sayisini da belirlerken ilk fail gorecek rakami bulmaya calistim ki rakamimiz: 50. concurrent 50 useri sisteme gonderince 1-2 request fail oldu, bu nedenle rakami arttirmadim. tum user’lari ayni anda gonderiyoruz, rump up yok.

son dakikada merak edip uber-jar’i openjdk-11 uzerinde de kosup test ettim.

sonuclar

app@env reqs/s reqs fails avg median max p50 p90 p99 p99.99
jar@openjdk 730.07 218911 9 68 9 1399 9 160 430 900
jar@graalvm 740.72 222135 2 67 9 1175 9 150 440 900
native-image 762.58 228692 2 65 10 1246 10 150 400 840

thinking cat

minimal ortamda hazirlanan bu load test sonuclarina baktiginizda cok buyuk fark olmasa da performans katkisini gozlemlemek mumkun. ancak cloud ortaminda bir infra kurulup yeterli sayida instance uzerinde load testing yapildiginda makasin acilacagina emin olabilirsiniz.

bu bitcoin adresine gereken miktarda btc yolladiginiz durumda istediginiz testleri yapar sonuclari sizinle paylasirim: bc1qx3gs5jskr3utfasxzkh00vf0msncc882kdd5f3