Skip to content

Performance Bug Roadmap

Do not implement these bottlenecks in the baseline.

BottleneckCode change that would introduce itExpected symptomDetect with k6Detect with JMeterFixMetric that should improve
Missing database indexesRemove foreign key and filter indexes from list/search tablesSlower filtered reads and summary queriesp95 and p99 rise on list/filter scenariosLonger response times for filtered samplersRestore indexes on common filters and foreign keysp95, p99, throughput
N+1 queriesLoad relations lazily in list and detail routesMany repeated queries and slower pagesDashboard/detail latency climbs under loadSamplers show unstable response timesUse eager loading or fewer round tripsp95, DB query count
No paginationReturn full table data from list endpointsLarger payloads and slower list pagesList endpoints slow as dataset growsRead-heavy thread groups degrade quicklyRestore pagination and capsp90, payload size
Slow searchUse unindexed ilike across many columnsSearch endpoints become CPU and DB heavySearch test p95 increases sharplySearch sampler times spikeAdd indexes or full-text searchp95, throughput
Large response payloadsInclude nested graphs and verbose fields everywhereHigher network and JSON parse timeDashboard/list throughput dropsResponse size increases in listenersTrim response models and add dedicated detail callsThroughput, response size
Synchronous activity loggingWrite logs inline with every request and commit separatelyWrite latency rises on create/updateCRUD workflow gets slowerWrite samplers show longer elapsed timesBuffer or batch log writesWrite latency, throughput
DB lock contentionUpdate the same rows repeatedly in hot pathsWrites stall under concurrencyCRUD test stalls and error rate risesThread group shows blocked samplersReduce hot-row updates and lock scopeError rate, p95
Bad connection poolingUse tiny pool sizes or no pre-pingRequests queue up or fail under loadSpike/stress tests show errorsThread count grows with failuresTune pool size, pre-ping, timeoutsError rate, throughput
Inefficient joinsJoin too many tables for list endpointsHigher CPU and slower page loadsDashboard and list latency increasesAggregates and view samplers slowSplit queries or precompute summariesp95, CPU
Expensive summary endpointAdd many heavy aggregations to /api/stats/summaryDashboard load becomes a bottleneckDashboard smoke/load worsensSummary sampler dominates reportCache or precompute summary dataDashboard p95, DB time