Wystawiłem sobie proste API
/add
/getAll
i chciałem dla testu sprawdzić wydajność i napisałem prosty program (pseudokod)
int i = 1;
while (true)
{
sendGET("/getAll");
Thread.Sleep(100);
sendPOST("/add", i);
Thread.Sleep(100);
Console.WriteLine(i);
i++;
}
I zauważyłem, że daje to radę wysłać np. 200x POST (czyli też 200x GET),a później strasznie spowalnia kilka następnych requestów mp. 3 requesty mieli 30sec, odcina się i powtarza cyklicznie.
W kontrolerze typowo
public List<Item> getAll()
{
return (_context.Items.OrderBy(x => x.Id).ToList());
}
public IActionResult Add(Model model)
{
_context.Items.Add(map model to Item);
_context.SaveChanges();
return OkResult;
}
O co chodzi? GarbageCollector? Mam ustawić limity API np. max 30 na minutę?
Dodatkowo, gdy sprawdziłem te appke na linuxie z mssql na dockerze i proste reverse proxy, to nic się nie zawieszało, ale później baza na dockerze mi padla :D
a zatem soft microsoftu działa lepiej na linuxach? :O