Ahoj,
vím že tady občas zavítají experti na Postgres, tak třeba budu mít štěstí a pomůžou.
Mám v databázi ve 2 tabulkách asi 6 - 10 mil. záznamů, a service zpracovává přibližně 1 request za vteřinu, načež v rámci toho jednoho requestu se udělá asi tak 8 jednoduchých selectů a 2 inserty.
Žádné další requesty do service ani do databáze nechodí. Tedy databáze zpracovává jen výše uvedené requesty.
99% requestů je hotových do 50ms, ale 1% requestů má spike, v délce trvání 150ms - 400ms.
Měřením jsem zjistil, že k těmto spikům dochází jak v AWS RDS se 4GB RAM a 2 vcpu, tak i na mém localhostu, kde mám Postgres rozjeto v Dockeru, opět se 4GB RAM a 2 vcpu.
Dále jsem měřením zjistil, že spike se může objevit na libovolném query, a to jak na selectu, tak na insertu, tedy z toho usuzuji, že v queries problém není, ostatně, průměrná délka requestu je jen nějakých 30ms, což optimální queries potvrzuje.
Všechny query mají řádně udělané potřebné indexy a query plany jsou zkontrolovány a jsou optimální.
Měl jsem podezření, že za spiky můžou checkpointy, avšak nakolik se spike vyskytne pravidelné každých 2-10 minut, checkpoint mám za to že je přecejen pravidelnější, každých 5 minut, a takovoutu železnou pravidelnost se nezdá, že by spiky měly.
V databázovém logu vidím vypsané queries a checkpointy, nikdy zde však nic podezřelého nepozoruji, všechno se zdá být standardní a opakující se s každým requestem, nikde žádný hint.
Nesetkal se s tím někdo už?